Fall 2013

Syllabus for CSC 2400 (Computer Systems I)
Fall 2013

 

 

Instructor

Mirela Damian, MSC 167A

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

Office Hours

T    4:00 pm – 5:30 pm

W   4:00 pm – 5:30 pm

Course Meets

Section 100: T 6:00 am 8:45 pm in Mendel G88

Section 101: W 6:00 am 8:45 pm in Mendel 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

 

Joseph Cavanagh

X86 Assembly Language and C Fundamentals

CRC Press, ISBN: 9781466568242

 

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.     Quizzes: Cover assignment material.

 

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

 

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. Late submissions will receive no credit.

 

 

Tentative Grading Procedure

 

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

                                   

Exams:

45%

Assignment and Quizzes:

45%

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://www1.villanova.edu/villanova/artsci/current_students/undergrad/integrity.html

 

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. 27 / 28

Introduction to Computer Systems. C vs. Java

Wk 2: Sep. 3 / 4

From C to Executable Code. Simple Unix.

Ch. 4.1

Wk 3: Sep. 10 / 11

C Programming Fundamentals

Ch. 4.2 – 4.6

Wk 4: Sep. 17 / 18

Number Systems and Number Representations

Ch. 1

Wk 5: Sep. 24 / 25

Bitwise and Logical Operators.

Ch. 4.4

Wk 6: Oct. 1 / 2

Logical Circuits

Notes

Wk 7: Oct. 8 / 9

Review and Midterm.

Oct. 12 – 20

Fall Break – ENJOY !

Wk 8:  Oct. 22 / 23

Arrays and Strings. Array Overflows.

Ch. 4.7

Wk 9: Oct. 29 / 30

Pointers and Dynamic Memory Allocation.

Ch  4.7

Wk 10: Nov. 5 / 6

Introduction to X86

Ch. 2

Wk 11: Nov. 12 / 13

Memory Addressing Modes

Ch. 3, 5

Wk 12: Nov.19 / 20

X86 versus C

Ch. 5, 6, 8

Nov 26

X86 Stack Layout and Usage

Ch. 7

Nov. 20 – 25

Thanksgiving Recess – ENJOY !

Wk 13: Dec.3 / 4

Buffer Overflow Attacks

Ch. 7

Wk 14: Dec. 11

Review

Final Exam

Section 100 Tuesday, Dec. 17, 6:00 – 8:30 pm

Section 101 Wednesday, Dec. 18, 6:00 – 8:30 pm