Spring 2016

 

Syllabus for CSC 2405 (Computer Systems II)

 

Instructor

Mirela Damian, Mendel Science Center 167A

mirela.damian@villanova.edu (preferred contact method)
Phone: (610)519-7414

Office Hours

TR   1:30 pm – 2:30 pm in Mendel 167A, or by appointment

Course Meets

Section 002 TR 2:30 pm 3:45 pm in Mendel G87

Section 001 TR 4:00 pm 5:15 pm in Mendel G87

Prerequisites

CSC 2400 – Computer Systems I

Teaching Assistant

VenkateswaraReddy Kunduru, vkunduru@villanova.edu

Help Desk

Schedule available at http://www.csc.villanova.edu/help

 

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.

 

One main aspect of this course will be programming projects, which will enable hands-on learning while gaining valuable and practical experience in Systems specifically and Computer Science generally. We will invest some time in class exploring hands-on learning, so come to class prepared to write code.

 

Course Objectives

 

1.     Understand the goals and functions of modern operating systems.                                        

2.     Describe and use techniques for achieving concurrency and synchronization.                                   

3.     Explain the workings of a system with virtual memory management.          

4.     Understand basics of networking and Internet communication.                    

5.     Describe the role of error correction codes in memories, storage and networks.

6.     Understand security risks and protection mechanisms for computer systems.                       

                                                                       

Resources

 

Website:

http://www.csc.villanova.edu/~mdamian/csc2405/

Notes, assignments, announcements and other course-related materials will be posted on this class website. Please make sure you check the class page regularly.

Text:

We will not follow a textbook closely, but will have several readings from Arpaci-Dusseau’s Operating Systems: Three Easy Pieces (free online in chapter-by-chapter form). This book matches closely to the needs of this class for the first half of the semester at least. In the second half of the class we will move away from core OS topics and toward networked/distributed systems. Links to other resources will be posted on the class website.

 

Course Requirements

1.     Assignments: With few exceptions, most are programming assignments intended to help you gain valuable and practical systems experience. Starting early on programming assignments is essential. Debugging programs takes time and your grade and learning will suffer if you attempt it at the last minute. It is possible that some assignments will not be graded, but most of your learning will come from devoting good chunks of time each week to assignments.

 

Your programs must compile. No credit will be given for code that does not compile. Keep copies of intermediate versions of your programs, and if you do not have time for last minute debugging, submit the last version that compiled and produced some results. It is better to submit a program that works than one that crashes, even if you have not implemented all the required features.

 

2.     Checkpoint Quizzes: Checkpoint quizzes will not be graded; they are intended to provide some representative questions for exams, and to give you a sense of how well you understand the material. They will be administered at the beginning of the class, so make sure to show up on time.

 

3.     Exams: one midterm and one final exam. The final exam will be comprehensive, although material covered after the midterm will be emphasized. Exams will be closed notes. However, you are allowed to bring one sheet of paper (letter size) with any information you think might help you during the exam. Such notes may not be shared during the exam.

 

Tentative Grading Procedure

 

Your assignments, quizzes and exams will contribute to your final score as follows:

 

                                    Assignments:                            40%

                                    Midterm:                                  30%

                                    Final Exam:                             30%

 

On a 100-point scale, you can expect the following letter grades:

 

 

≥ 88: B+

≥ 78: C+

≥ 68: D+

≥ 95: A

≥ 84: B

≥ 74: C

≥ 64: D

≥ 90: A-

≥ 80: B-

≥ 70: C-

else: F

Policies

 

1.     Class Attendance Policy. Students are expected to attend all classes and to turn up on time. Each student is responsible for all material, announcements, and assignments covered during any class missed.

 

2.     Makeup Policy. No makeup quizzes or exams will be given, except possibly in the case of a serious documented emergency. Makeup exams will not be easier than regularly scheduled exams.

 

3.     Late Submission Policy. All assignments are due at the beginning of the class on the due date. No assignments will be accepted late without the direct consent of the instructor at least 24 hours prior to the due date of the assignment.

 

4.     There will be no extra credit. Students usually ask for extra credit late in the semester after they have already squandered their original opportunities. Be sure to start your work early, so that we can detect and solve any problems before they can affect your grade.

 

5.     Write your own code. Programming in an individual creative process much like composition. You must reach your own understanding of the problem and discover a path to its solution. During this time, discussions with friends are encouraged. However, when the time comes to write code that solves the problem, such discussions are no longer appropriate. The program must be your own work.  

 

6.     Academic Integrity. As a Villanova student, you are trusted to be honorable. Do not copy assignment solutions from the web or from another student. Do not share your code with another student. I take academic dishonesty very seriously and will not tolerate it in this class in any form.

 

All students are expected to uphold Villanova’s Academic Integrity Policy and Code.  Any incident of academic dishonesty will be reported to the Dean of the College of Liberal Arts and Sciences for disciplinary action.  For the College’s statement on Academic Integrity, you should consult the Enchiridion.  You may view the university’s Academic Integrity Policy and Code, as well as other useful information related to writing papers, at the Academic Integrity Gateway site

 

http://library.villanova.edu/Help/AcademicIntegrity

           

7.     Special Arrangements. Students with disabilities who require reasonable academic accommodations should schedule an appointment to discuss specifics with me. It is the policy of Villanova to make reasonable academic accommodations for qualified individuals with disabilities. You must present verification and register with the Learning Support Office by contacting 610-519-5176 or at learning.support.services@villanova.edu, or for physical access or temporary disabling conditions, please contact the Office of Disability Services at 610-519-4095 or email Stephen.mcwilliams@villanova.edu. Registration is needed in order to receive accommodations.


Tentative Course Schedule

 

The course schedule below is approximate and subject to change as the semester progresses. Please check the online version on the course schedule regularly.

 

Date

Topic

Wk 1: Jan. 12, 14

Computer Systems Overview.

Program Execution Environment; Smart Shell Hands-On

Wk 2: Jan. 19, 21

Wk 3: Jan. 26, 28

Introduction to Processes (Creation, Execution)

Wk 4: Feb. 2, 4

Process States and Transitions; I/O Interrupts; CPU Scheduling

Wk 5: Feb. 9, 11

Wk 6: Feb. 16, 18

Inter-Process Communication (Pipes, Messages, RPC)

Wk 7: Feb. 23, 25

Introduction to Threads

Feb. 29 – Mar. 6

Spring Break – ENJOY !

Wk 8:  Mar. 8, 10

Basics of Computer Malware (online videos)

Wk 9: Mar. 15, 17

Synchronizing Threads with Semaphores

Wk 10: Mar. 22

Midterm

Mar. 23 – 28

Easter Break – ENJOY !

Wk 11: Mar. 29, 31

Networking and Communication (TCP/IP, DNS, HTTP, Sockets)

Wk 12: Apr. 5, 7

Wk 13: Apr. 12, 14

Memory Management and Protection; Virtual Memory

Wk 14: Apr. 19, 21

Storage Management; File Systems

Security and Protection

Wk 15: Apr. 28

Final exam

Section 001 on Friday, May 6, 8:30 – 11:00 am

Section 002 on Monday, May 2, 2:30 – 5:00 pm