Syllabus for CSC 2405

(Computing Systems II)




Mirela Damian, MSC 167A
Phone: (610)519-7414

Office Hours

M   10:30 am – 11:30 am

W   4:30 pm – 5:30 pm

Course Meets

MWF 9:30 10:20 pm  in  Mendel G87


CSC 2400 – Computer Systems I


Course Description


This course is the second part of a two semester sequence – Computer Systems I and II.  The goal of this course is to bridge the gap between high-level programming and actual computer components, such as processors, caches, operating systems, compilers, linkers, and so on. This course will teach the way computer systems work from the low level device interrupts up to processes, threads, memory management, file systems and security. Labs will be interspersed with lectures to enhance students’ experience with the C language and the Unix system.


Student Learning Outcomes


1.       Students will demonstrate working knowledge of thread and process management and concurrency.

2.       Students will demonstrate a thorough understanding of virtual memory, physical memory and cache management.

3.       Students will use basic operating system services to implement medium-to-large application programs.

4.       Students will be able to identify and analyze the needs and concerns of real-time systems.

5.       Students will demonstrate an understanding of security risks faced by computer systems and security mechanisms designed to protect computer systems.

6.       Students will enhance their knowledge of C and Unix through the development of two major projects.




No textbook is required for this course –  we will be using online resources and class notes. This saves you money, but places a demand on your attendance, attention, and note-taking.. Our main reference is the online textbook “An Operating Systems Vade Mecum”, by Raphael A. Finkel from the University of Wisconsin at Madison. All course-related materials will be posted on the class website


Please make sure you check the class page regularly.

Course Requirements

1.       Assignments: Assignments will involve both pencil and paper problem solving, and C programming in Unix. Some of the assignments will be done individually, while others will be done in groups. The group assignments will not be collected. Instead, at the beginning of class on the day the assignment is due, you will have the opportunity to demonstrate your understanding of the material by individually answering quiz questions similar to those in the assignment.


2.       Quizzes: Periodic quizzes, only 10-15 minutes in length. The intent is to help students learn the material incrementally and know where they stand.


3.       Tests: Three tests, fairly evenly distributed over the semester. Tests will be closed books, closed notes. However, you are allowed to bring one sheet of paper, letter size, with any information (on both sides) you think will help you during the exam. Notes may not be shared during the exam.


4.       Class Attendance. Regular attendance is expected of all students. Each student is responsible for all material, announcements, and assignments covered during any class missed.


5.       Late Policy. All assignments are due at the beginning of the class on the due date. No credit will be given to late assignments. Exceptions to this policy will be granted only in extraordinary circumstances.


Tentative Grading Procedure


The following allocation of points is tentative and may change during the semester:


                                    Assignments:     30%

                                    Quizzes:            20%

                                    Tests:               50%


Academic Integrity


I encourage you to collaborate on assignments and learn from your fellow students. However, there is a fine line between collaboration and cheating. Collaboration means discussing problems and solution approaches with other students and independently writing your own answers; cheating means copying solutions from someone else or giving someone else your solutions. If you have questions about what is acceptable, please bring them to me before submitting your work.


Cheating, plagiarism and helping others commit these acts are all forms of academic dishonesty, and will not be tolerated. The penalty for any act of dishonesty is an ‘F’ grade for the course. Please consult the Code on Academic Integrity at




Special Arrangements


If anyone has a disability or other problems that warrant the need for special accommodation to complete the course work, please contact me at your earliest convenience.

Tentative Course Schedule


The course schedule below is approximate and subject to change as the semester progresses. It is the responsibility of the student to learn and adjust to changes.





Wk 1: Jan. 10-14

Overview. Key computer systems concepts.

Wk 2: Jan. 19-21

Processes (Creation, Execution, Management).

Wk 3: Jan. 24-28

Wk 4: Jan 31-Feb. 4

Process Scheduling.                                                             

Wk 5: Feb. 7-11

Process Communication (Pipes, Signals, Sockets).

Wk 6: Feb. 14-18

Wk 7: Feb. 21-25

Catching up.                                                                                        Test 1.

   Feb. 28 – Mar. 4

Spring Break – ENJOY !

Wk 8:  Mar. 7-11

Introduction to Threads.

Wk 9: Mar. 14-18

Thread Synchronization.

Wk 10: Mar. 21-25

Wk 11: Mar. 28-Apr. 1

Memory (Relocation, Protection)                                                          Test 2. 

Wk 12: Apr. 4-8

Memory Management.

Wk 13: Apr. 11-15

Wk 14: Apr. 18-20

File Systems.                                                                                       Test 3. 

   Apr. 21 – 25

Easter Recess – ENJOY !

Wk 15: Apr. 27