Course Description:

This course covers issues and structures common in the construction of distributed and concurrent software systems. Emphasis is on fundamentals found in systems of this type. Topics include remote object invocation, middleware technologies, and common architectural and design patterns. Quality factors will be discussed, including responsiveness, throughput, and extensibility. There is no way we can cover other than a small sample of topics in concurrent systems; new languages and libraries are coming into use frequently, each reflecting emerging ideas on organizing concurrent systems.  Thus this course will use a variety of technologies, most built on the Java Virtual Machine (JVM) to explore the promises, pitfalls, principles, and patterns of concurrency. The primary focus is on time-tested approaches to concurrency, and the way contemporary hardware and software platforms can be applied to create correct, reliable, robust and efficient concurrent systems.

Until recently, the "older" concurrent systems course addressed both mathematical modeling of concurrency and the pragmatics of designing and implementing concurrent systems. Course feedback in the past has focused on the balance between these two parts, with many students commenting that the pragmatic engineering concerns were given short shrift. In response, we have moved the mathematical modeling into a new semester course; thus we have time in this course to delve more deeply into principles, patterns, and concurrency mechanisms.

Please spend some time reading this document, as it contains vital information about the texts, course policies and grading. 

Sections:

Term:

Spring 2025 (2245)

Course Topics:

The course will encompass a variety of concepts and topics, among them are the following:

Method of Instruction:

Classroom Activities - During class time you will be working in small groups or paired with other students. 

Projects - There will be 2-3 team projects assigned during the quarter. Details on the content of the project, expected deliverables and assessment will be provided with the description of each project.

Reading -Reading will be assigned on a weekly basis. These assignments will supplement and reinforce project and classroom activities. I expect you to have read and understood the assigned material before the specified class.

Exams – There will be two mid-term exams during Weeks 5 and 10. A final exam will be given during Week 16.

 


Textbook(s):

I do not care where you purchase these. In particular, the Pragmatic Programmers (pragpub.com) offer several e-reader versions of PCJVM for $22.00.

If you take the e-reader route, PLEASE DO NOT DISTRIBUTE YOUR BOOK TO ANYONE ELSE! The cost is low, and this publisher much prefers distributing books without DRM locks. Do your part to support this by purchasing your own copy.

Grading Breakdown:

A final course grade is a combination of your grades on exams, quizzes, class activities and team projects.

Component Percentage of Final Grade
Exam 1 (Week 5) 15%
Exam 2 (Week 10) 15%
Final Exam (Week 16) 20%
Team Projects 30%
Activities 20%

Plus/Minus Grades

RIT began using plus/minus grades starting in the Fall 0f 2014 (2141).  All SE courses will use the +/- system. The numeric range of grades may vary from instructor to instructor, but multi section courses will use the same numeric ranges. The ranges for this course are:

Letter Grade Numeric Grade GPA Points
A 93-100 4.000
A- 90-92 3.667
B+ 87-89 3.333
B 83-86 3.000
B- 80-82 2.667
C+ 77-79 2.333
C 73-76 2.000
C- 70-72 1.667
D 60-69 1.000
F Below 60 0.000

For more information consult the Provost's website: http://www.rit.edu/provost/grading

Grading Policy


I will post grades in the Gradebook section of myCourses which does a running calculation of your final grade. Once a grade is posted for an exam, activity or project you have 48 hours to resolve any grading question. After that it becomes final. Please email your questions to me, even if we have spoken face-to-face.