Fall
2011
Syllabus
for CSC 2400 (Computer Systems I)
Instructor |
Mirela
Damian, MSC 167A
mirela.damian@villanova.edu
|
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. |
|
Wk 2: Aug.30,
Sep. 1 |
From
C to Executable Code. Simple Unix. |
Ch. 1 |
Wk 3: Sep. 6,
8 |
Bitwise and
Logical Operators. |
|
Wk 4: Sep. 13,
15 |
Integral
C Data Types. Bit Manipulations. |
|
Wk 5: Sep. 20,
22 |
Arrays and
Strings. Array Overflows |
|
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 |
|
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. |
|
Wk 14: Dec.6,
8 |
Socket System
Calls. SMTP. |
|
Final
Exam Saturday, Dec. 17, 4:15 – 6:45 pm |