Fall 2011

Syllabus for CSC 2400 (Computer Systems I)

 

 

 

Instructor

Mirela Damian, MSC 167A

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

Office Hours

T  10:00 am – 11:20 am

W   1:00 pm – 2:20 pm

Course Meets

TR 8:30 am 9:45 am  in  Mendel Science Center G86

Prerequisites

CSC 1052 – Algorithms and Data Structures II

CSC 1300 – Discrete Structures

 

Course Description

 

This course is the first 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 systems -- processors, caches, operating systems, compilers, linkers and so on. The course 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.

 

Student Learning Outcomes

 

1.      Students will differentiate between different internal formats to represent numerical data and their effect on precision and accuracy.

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

3.      Students will enhance their programming skills through the development, testing and debugging of C programs in Unix.

4.      Students will use basic operating system services to create processes and have them communicate with one another.

5.      Students will appreciate the need for security and ethics in computer use.

 

Resources

 

The textbook for this class is

 

Adam Hoover

System Programming with C and Unix

Addison-Wesley, ISBN: 0-13-606712-3

 

Other course-related materials will be posted online at

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

Please make sure you check the class page regularly.

Course Requirements

1.      Assignments: Weekly, most of which will involve C programming in Unix.

 

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

 

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

 

4.      Late Policy. All assignments are due at the beginning of the class on the due date. Late submissions will receive penalties on this scale:

 

90% for work submitted up to 3 hours late,

80% for work submitted up to 6 hours late,

65% for work submitted up to 12 hours late,

50% for work submitted up to 24 hours late,

0% for work submitted more than 24 hours late.

 

 

Tentative Grading Procedure

 

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

 

                                    Exams:                                              50%

                                    Assignments:                                     40%

                                    Others (Quizzes, Class Participation):  10%

 

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. Academic misconduct could result in disciplinary action that may include, but is not limited to, suspension or dismissal. To read the entire Code on Academic Integrity, consult

 

                        http://www.villanova.edu/vpaa/office/facultyservices/policies/integrity/code.htm

 

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. Students are expected to read chapter material to be covered prior to each session.

 

Date

Topic

References

Wk 1: Aug. 25

Introduction to Computer Systems. Simple C.

Ch. 1

Wk 2: Aug.30, Sep. 1

From C to Executable Code. Simple Unix.

Ch. 1

Wk 3: Sep. 6, 8

Bitwise and Logical Operators.

Ch. 1

Wk 4: Sep. 13, 15

Integral C Data Types. Bit Manipulations.

Ch. 2

Wk 5: Sep. 20, 22

Arrays and Strings. Array Overflows

Ch. 3, 4

Wk 6: Sep. 27, 29

Pointers and Structures.

Ch. 4

Wk 7: Oct. 4, 6

Review and Midterm.

Oct. 10 – 16

Fall Break – ENJOY !

Wk 8:  Oct. 18, 20

Dynamic Memory Allocation.

Ch. 4

Wk 9: Oct. 25, 27

Program Building. Introduction to X86.

Ch 6, Notes

Wk 10: Nov. 1, 3

The X86 Stack.

Notes

Wk 11: Nov. 8, 10

Translating X86 to C.

Notes

Wk 12: Nov. 15, 17

Security Issues. Buffer Overflows.

Notes

Nov. 22

Catching up.

Nov. 23 – 27

Thanksgiving Recess – ENJOY !

Wk 13: Nov.29, Dec.1

Introduction to Processes. System Calls.

Ch. 7

Wk 14: Dec.6, 8

Socket System Calls. SMTP.

Ch. 7.5, Notes

Final Exam Saturday, Dec. 17, 4:15 – 6:45 pm