CSCI-UA.201 Computer Systems Organization
2023 Fall Syllabus and Schedule
Course Number: CSCI-UA.0201
Course Title: Computer Systems Organization
Section: 007
Course Type: In-person
Recitation Sections: 008
(F 2-3.15pm. 19 University Pl Room 102)
Semester: Fall 2023
Course Description
This course covers the internal structure of computers, machine (assembly) language programming, and the use of pointers in high-level languages. Topics include the logical design of computers, computer architecture, the internal representation of data, instruction sets, and addressing logic, as well as pointers, structures, and other features of high-level languages that relate to assembly language. Programming assignments are in both assembly language and other languages.
Pre-requisites: CSCI.UA.102 data Structures
Office Hours (starting on September 12, 2023):
Tuesday (12.30pm-1.30pm) in-person
Thursday (2pm-2.30) online (check announcements for details)
You are highly encouraged to visit the instructor during office hours without notice. Prepare for office hours by coming up with focused and targeted questions. In case there is a line of students waiting, the instructor will limit the meeting to a maximum of 5 minutes per student. You are also encouraged to meet with tutors. The schedule of the tutors will be uploaded on Brightspace and I will be sending emails about the schedule, separately.
Textbook:
- Computer Systems: A Programmer’s Perspective, 3rd edition, Randal E. Bryant and David R. O’Hallaron.
- The C programming language, 2nd edition, Brian W. Kernighan, Dennis Ritchie, (you can use any C programming book as an alternative).
Topics
This is a tentative list of the topics:
- C: basic types, control flow
- C: pointers and arrays
- Bits, bytes, ints, floats
- C type conversion
- Machine programming
- System hardware
- Memory hierarchy
- Caching
- Exceptions and processes
- Virtual memory
- Dynamic memory allocation
- Multitasking and signals (optional)
- System-level I/O (optional)
- Concurrent programming (optional)
- Linking (optional)
Course materials and announcements will be shared in Brightspace.
Assignments
The assignments will be sent out via the Brightspace and the course website.
HW Submission: You will be asked to send your assignments via Brightspace. While you send your files (source codes, zip files, etc.), please use appropriate file names. For every 24 hours that an assignment is late, we will apply a 10% penalty on the grade, up to a maximum penalty of 30%. After 72 hours, we will no longer accept the assignment.
Recitations: Recitations are available for Q&A sessions and extra activities. Attending the recitations is strongly suggested.
Grading
Please note that this grading policy is subject to change at any time without notice. If a change occurs, a new version will be uploaded on NYU Brightspace.
Final grades for the course will be determined using the following weights:
- exams (65%): mini exam (5%), midterm exam (20%) and the final (40%)
- projects (25% total)
- recitation activities (5% total)
recitation activities are completed during recitations – you will not get credit for these unless you are in the recitation session - quizzes (5% total)
pop-quizzes will be given during lectures and willnot be announced
The missed quizzes and recitation activities will not be made up.
Missing an exam: There will be no make-up exams. The only exception to this rule is for students who have a valid medical emergency. These students need to talk to the instructor as soon as possible.
The following scale will be followed when assigning the final grade and the scale is subject to change accordingly by the instructor at any time during the semester.
A 93-100
A- 90-92
B+ 87-89
B 84-86
B- 80-83
C+ 76-79
C 72-75
C- 70-71
D+ 67-69
D 65-66
F below 65
The grade of Incomplete is reserved for students who, for legitimate and documented reason, miss the final exam. The grade of Incomplete will not be given to student who started falling behind in class. Those students can withdraw from the class.
Date | Class | Materials Covered | Notes |
09/05 | #1 | Syllabus check
Introduction to Unix Introduction to C |
|
09/07 | #2 | Basic Unix/Linux commands
C basics |
|
09/12 | #3 | C cont. pointers, memory addresses, dereferencing | Recitations start |
09/14 | #4 | Continue with pointers in C | |
09/19 | #5 | Continue with pointers in C | |
09/21 | #6 | strings in C = null terminated arrays of characters | |
09/26 | #7 | Structures | |
09/28 | #8 | Dynamic memory allocation. | |
10/03 | #9 | Defining data structures in C. | |
10/05 | #10 | Data structures in C cont. | |
10/10 | LEGISLATIVE DAY – NO CLASS | ||
10/12 | #11 | Review | |
10/17 | #12 | MINI EXAM | |
10/19 | #13 | Two’s complements and binary level of representing integer data types in C. | |
10/24 | #14 | Data representation: more on integer representation, casting, truncating, overflow due to addition and multiplication.
Data representation: floating point numbers, IEEE 754 encoding Machine level programming: arithmetic and logical operations. |
|
10/26 | #15 | Machine level programming: arithmetic and logical operations. | |
10/31 | #16 | Control structures. | |
11/02 | #17 | Control structures | |
11/07 | #18 | Function calls | |
11/09 | #19 | Arrays, structures and other things in assembly. | |
11/14 | #20 | memory Hierarchy | |
11/16 | #21 | memory Hierarchy | |
11/21 | #22 | Cache memories-how to improve cache performance of code. | |
11/23 | THANKSGIVING RECESS – NO CLASS | ||
11/28 | #23 | Midterm Exam | |
11/30 | #24 | Dynamic memory allocators | |
12/05 | #25 | Dynamic memory allocators | |
12/07 | #26 | Processes: what are they, program vs. process, CPU’s interaction with processes, kernel and its role. | |
12/12 | #27 | Continue processes: creating, terminating, process ID and parent process ID. | |
12/14 | #28 | Review |