Syllabus for CSC 2400-001 (Computer Systems I)




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

Office Hours

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

Course Meets

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


CSC 1052 – Algorithms and Data Structures II

CSC 1300 – Discrete Structures

Teaching Assistant

Jeff Linahan,

Help Desk

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.


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 VillanovaCSC2400DamianFall2015

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

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.     In-class Quizzes: Quizzes will be scheduled throughout the semester (usually on Thursdays) 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).


3.     Lab Projects: One important aspect of this course will be programming lab projects, which will enable hands-on learning while gaining valuable and practical systems experience. We will invest significant time in class exploring hands-on learning, so come to class prepared to write code. Labs generally need to be completed by the beginning of the next class period.


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:


Lab Projects:




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.





Wk 1: Aug. 25, 27

Goals and Introduction.

Notes, zyBook 1.1 –1.3

Wk 2: Sep. 1, 3

Intro to Unix. Input and Output in C.

Number Systems.

Notes, zyBook 1.4 –1.9, 2.1

Tarnoff Ch. 2

Wk 3: Sep. 8, 10

Data Representation.

Machine Limitations.

Notes, zyBook 2.2 – 2.7

Tarnoff Ch. 3

Wk 4: Sep. 15, 17

More Unix. Bitwise vs. Logical Operators.

Notes, Tarnoff Ch. 9, zyBook 3

Wk 5: Sep. 22, 24

Logic Gates. ALU Design

Notes, Tarnoff Ch. 4

Wk 6: Sep 29, Oct. 1

More on ASCII codes and unicodes.

Notes, zyBook 4

Wk 7: Oct. 6, 8

Review. Midterm on Thursday, Oct. 8.

Oct. 12 – 18

Fall Break – ENJOY !

Wk 8:  Oct. 20, 22

Preprocessor. State Machines.

Notes, Tarnoff Ch. 11

Wk 9: Oct. 27, 29

Strings and Arrays in C.

zyBooks 5, 6

Wk 10: Nov. 3, 5

Structures and Pointers in C.

zyBooks 7, 8

Wk 11: Nov. 10, 12

Introduction to Assembly (X86).

Notes, Tarnoff Ch. 15 – 17

Wk 12: Nov. 17, 19

Memory Addressing. Stack Operations.


Nov 24

X86 Stack Layout and Usage


Nov. 25 – 29

Thanksgiving Recess – ENJOY !

Wk 13: Dec. 1, 3

Security and Ethics.


Wk 14: Dec. 10


Final Exam

Tuesday, Dec. 15, 8:30 am – 11:00 am