Syllabus for CSC 2400 (Computer Systems I)

Fall 2016




Mirela Damian, Mendel Science Center 167A (preferred contact method)
Phone: (610)519-7414

Office Hours

M   3:00 pm – 4:30 pm, R 2:00 pm – 3:30 pm, and by appointment

Course Meets

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

Section 100 TR 6:10 pm – 7:25 pm in Mendel G90


CSC 1052 – Algorithms and Data Structures II

CSC 1300 – Discrete Structures

Peer Tutoring

Office hours online


Course Description


This course is the first part of a two-semester sequence – Computer Systems I and Computer Systems II.  The goal of this course is to bridge the gap between high-level programming and actual computer systems -- processors, caches, operating systems, compilers and linkers. Computer Systems I comprises three major parts: machine organization and assembly language programming, C program design and development, and operating system tools. Unix will be used as a running example. Labs will be interspersed with lectures to give students hands on experience with the C language and the Unix system.


Note that this is a class on systems concepts, not on C programming. Most of the basic constructs such as if statements, loops, function syntax, switch case statements and operators are the same in C and Java, and you are expected to know them from CSC 1052. You will have a chance to refresh your knowledge on these topics using the online zyBook Programming in C. However, class time will be dedicated only to those programming features that are different in C and Java and that are relevant to systems topics.


Course Objectives


Things you should be able to do by the end of the semester:

1.     Differentiate between different internal formats to represent numerical data

2.     Be able to explain of the role of the basic computer system components (hardware and software) and how they interact with one another

3.     Demonstrate programming skills through the development, testing and debugging of C programs in Unix

4.     Appreciate the need for security and ethics in computer use





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


1.     David Tarnoff, Computer Organization and Design Fundamentals (free online)

2.     Programming in C, an online interactive text from Zyante. This is a required resource. To obtain access:

a.     Sign up at

b.     Enter zyBook code VILLANOVACSC2400DamianFall2016

c.     Subscribe ($48) using any credit card. Subscription is valid through 01/02/17

Course Requirements

1.     Assignments: In this course every concept builds on previous ones, and for this reason it is important to complete assignments on time so that you won’t fall behind.  Readings and zyBook activities will count as assignments.


2.     Labs: One important aspect of this course will be programming lab projects, which will enable hands-on learning while gaining valuable and practical systems experience. Some class time will be devoted to hands-on learning, so please come to class prepared to write code.


3.     In-class Quizzes: Quizzes will be scheduled throughout the semester to make sure that you are following along, and to provide some representative questions for exams. They will be administered at the beginning of the class, so make sure to show up on time to class. A missed quiz will just result in a zero (no make-up quizzes).


4.     Tests: one midterm and one comprehensive final exam. Tests will be closed books, closed notes. However, you are allowed to bring one sheet of paper (letter size) with any information you think will help you during the exam. Please note that notes may not be shared during the exam.


Tentative Grading Procedure


Your grade will be computed based on home readings and activities, quizzes, lab projects and exams, each contributing equally to your final score as follows:






In-class Quizzes:




Final exam:



With the exception of the midterm and final exam, the lowest score in each category will be dropped. 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



1.     Class Attendance Policy. Mandatory. Each student is responsible for all material, announcements, and assignments covered during any class missed.


2.     Makeup Policy. There will be no makeup quizzes (regardless of whether you had an excused or unexcused absence). If you need to miss an exam due to an emergency, try to notify me in advance so we can make arrangements to make it up. Makeup tests will not be easier than regularly scheduled tests.


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. 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


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, or for physical access or temporary disabling conditions, please contact the Office of Disability Services at 610-519-4095 or email 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. It is the responsibility of the student to learn and adjust to changes.





Week 1: Aug. 25

Goals and Introduction; Intro to C

Notes; zyBook Ch. 1

Week 2: Aug. 30, Sep. 1

Number Systems; Intro to Unix

Notes; Tarnoff Ch. 2

zyBook Ch. 2.1;

Week 3: Sep. 6, 8

Number Representations: bytes, characters, integers and floats; machine limitations

Notes, Tarnoff Ch. 3

zyBook Ch. 2.2 – 2.8

Week 4: Sep. 13, 15

Bitwise vs. Logical Operators

Notes, Tarnoff Ch. 9, zyBook Ch. 3

Week 5: Sep 20, 22

Logic Gates; ALU Design

Notes, Tarnoff Ch. 4

Week 6: Sep. 27, 29

The Memory Hierarchy

Notes, Tarnoff Ch. 13

Week 7: Oct. 4, 6

Review. Midterm on Thursday, Oct. 6

Oct. 10 – 16

Fall Break – ENJOY !

Week 8:  Oct. 18, 20

Strings and Arrays in C

zyBooks 5, 6

Week 9: Oct. 25, 27

Structures and Pointers in C

zyBooks 7, 8

Week 10: Nov. 1, 3

Introduction to Assembly (X86)

Notes, Tarnoff Ch. 15 – 17

Week 11: Nov. 8, 10

Memory Addressing; Stack Operations

Notes, zyBooks  6.7

Week 12: Nov. 15, 17

X86 Stack Layout and Usage


Nov 22

Buffer-Overflow Attacks on the Stack


Nov. 23 – 27

Thanksgiving Recess – ENJOY !

Week 13: Nov. 29, Dec. 1

Introduction to CPU Scheduling


Week 14: Dec. 6, 8

Security and Ethics


Final Exam

Section 001: Thursday, December 15, 8:30 am - 11:00 am

Section 100: Tuesday, December 20, 6:00 pm - 8:30 pm