NEW YORK UNIVERSITY
COMPUTER SCIENCE DEPARTMENT
COURANT INSTITUTE OF MATHEMATICAL SCIENCES
COMPUTER SYSTEMS ORGANIZATION
Spring 2023 – Pr. Jean-Claude FRANCHITTI
(CSCI-UA.0201-007 – Mon & Wed 3:30 - 4:45 pm)
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 will
be both in assembly language and other languages. After this course, you should be able
to understand what happens under the hood when your computer executes programs. You
will be able to visualize the big picture that shows how software and hardware interact.
REQUIRED TEXTBOOK
Computer Systems: A Programmer's Perspective
By Randal Bryant and David O'Hallaron
Pearson; ISBN-10: 013409266X; ISBN-13: 978-0134092669
3rd Edition (03/15)
RECOMMENDED TEXTBOOKS
The following book is not required but recommended to learn C programming:
The C programming language
By Brian W Kernighan and Dennis Ritchie
Prentice Hall; ISBN-10: 0131103628; ISBN-13: 978-01311103627
2nd Edition (04/88)
PREREQUISITES
Students enrolling in this course are expected to have taken CSCI-UA.102 (i.e., Data
Structures) and passed the course with a grade of C or better. You are expected to know and
remember the material from [Link].0101 and [Link].0102 courses.
COURSE TOPICS
The following topics are covered in this course:
1. C PROGRAMMING LANGUAGE
1|Page
• Procedural way of thinking
• Data structure and control
• Bitwise operations
• Pointers
• Data Presentation
• Signed and unsigned numbers
• Two’s complement
• Addition/subtraction of signed and unsigned numbers
• IEEE 754 floating point presentation
READINGS: Selected readings assigned in class
Handouts posted on the course Web site
2. x86_64 ASSEMBLY LANGUAGE
• Do you really need to learn assembly?
• CISC vs, RISC philosophy
• Evolution of processors from 8-bit to 64-bit
• Data movement
• Arithmetic/logic instructions
• Control instructions
• From C to assembly
READINGS: Selected readings assigned in class
Handouts posted on the course Web site
3. LINKING
• The big picture from compilation to execution
READINGS: Selected readings assigned in class
Handouts posted on the course Web site
4. ARCHITECTURE
• How do microprocessors work?
READINGS: Selected readings assigned in class
Handouts posted on the course Web site
5. MEMORY SYSTEM
• A quick glimpse on Virtual Memory
• SRAM vs DRAM technologies
• The concept of caching
• Cache hierarchy
• How to write cache friendly programs?
2|Page
READINGS: Selected readings assigned in class
Handouts posted on the course Web site
6. DYNAMIC MEMORY ALLOCATION
• Main algorithms of dynamic memory allocation
• Managed vs unmanaged languages
READINGS: Selected readings assigned in class
Handouts posted on the course Web site
7. PROCESSES and CONCURRENCY (time permitting)
• Process vs thread
• How to spawn several processes and control them
READINGS: Selected readings assigned in class
Handouts posted on the course Web site
COURSE READINGS
Assigned readings for the course will be from the textbook, recommended book, and other
suggested sources.
ASSIGNMENTS
• Lab and homework assignments completion will be required.
• Quizzes may be administered.
• All exams will be conducted in class.
GRADING POLICY
• 20% Lab/Project Assignments (projects will require significant amount of code in C and
assembly and corresponding solutions will need to be submitted electronically via NYU
classes by the deadline indicated)
• 10% Homework Assignments
• 5% Recitation Activities (activities will be completed during recitations; credit will only be
given to students attending the recitations and the two lowest recitation scores will be dropped
at the end of the semester)
• 5% Quizzes/Online Tests (quizzes may be given during lectures without prior notification,
there will not be make-up quizzes and the two lowest quiz scores will be dropped at the end
of the semester)
• 25% Midterm Examination
• 35% Final Examination
The midterm and final exams will be administered during the time allocated by CAS. There will
not be any make-up exams and the failure to take an exam will count as a zero grade for that
exam. The only exception to this rule is for students who have a legitimate medical or personal
documented emergency that is promptly brought up to the attention of the instructor. If you will
3|Page
miss an exam due to a religious observance, please familiarize yourself with University Calendar
Policy on Religious Holidays and let the instructor know well in advance to come up with
alternative arrangements.
The grading schema for the course is as follows:
A 95-100
A- 90-95
B+ 87-90
B 83-87
B- 80-83
C+ 76-80
C 72-76
D 65-72
F less than 65
Please note that the grade of Incomplete (“I”) is reserved for students who, for legitimate and
documented reason, miss the final exam. The grade of Incomplete will not be given to students
who fell behind in class. Those students should withdraw from the class or switch to Pass/Fail
option.
4|Page