Syllabus
for CSC 2400 (Computer Systems I)
Instructor |
Mirela
Damian, MSC 167A
mirela.damian@villanova.edu
|
Office Hours |
M 4:00 pm – 5:00 pm W 1:30 pm – 3:30 pm |
Course Meets |
W
6:00 am – 8:45 am in
Mendel G88 |
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.html
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: Weekly, 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. 29 |
Introduction
to Computer Systems. Simple C. |
|
Wk 2: Sep. 5 |
From
C to Executable Code. Simple Unix. |
Ch. 1 |
Wk 3: Sep. 12 |
Bitwise and
Logical Operators. |
|
Wk 4: Sep. 19 |
Integral
C Data Types. Bit Manipulations. |
|
Wk 5: Sep. 26 |
Arrays and
Strings. Array Overflows. |
|
Wk 6: Oct. 3 |
Pointers and
Dynamic Memory Allocation. |
Ch. 4 |
Wk 7: Oct. 10 |
Review
and Midterm. |
|
Oct. 15 – 21 |
Fall Break – ENJOY
!
|
|
Wk 8: Oct. 24 |
Introduction to
X86. Memory Addressing Modes. |
Ch. 4 |
Wk 9: Oct. 31 |
Translating
X86 to C. |
Ch 6, Notes |
Wk 10: Nov. 7 |
X86 Stack
Layout and Usage. |
Notes |
Wk 11: Nov. 14 |
Buffer
Overflow Attacks. |
Notes |
Nov. 20 – 25 |
Thanksgiving
Recess – ENJOY ! |
|
Wk 12: Nov.28 |
Introduction
to Processes. System Calls. |
|
Wk 13: Dec.5 |
Process
Communication. |
Ch. 7 |
Wk 14: Dec. 12 |
Socket System
Calls. SMTP. |
|
Final
Exam Wednesday, Dec. 19, 6:00 – 8:30 pm |