Course Syllabus

CS-220: Computer Systems II

Fall 2015

Credits /Contact Hours 4 credits, Three 60 minute lectures and one 85 minute lab per week

Lecture: 1:10pm – 2:10pm (MWF) at Fine Arts (FA) 258; Labs: Thursday at EB Q-22


Teaching Staff


Tom Bartenstein


Kailas Nair


Ozgur Ozan Kilic






Office Hours

10:00am – 12:00pm, MWF

Fri 2:30pm-4:00pm

Tue 11:30am-1:00pm


EB P-14

EB P-17

EB Q-22

Lab Sections


Thu 2:50pm – 4:15pm

Thu 4:25pm – 5:30pm

Thu 11:40am – 1:05pm

Thu 1:15pm – 2:45pm



Computer Systems: A Programmer’s Perspective, Second Edition, Randal E. Bryant and David R. O’Hallaron (CS:APP2e), Prentice Hall. (There will be no specific reading assignments, but each lecture will identify the associated sections of the text which are relevant to that lecture. Read these sections before the lecture to prepare for the lecture, and/or after the lecture to get a different perspective on the material.)

Supplementary Text: The C Programming Language, Second Edition, Brian Kernighan and Dennis Ritchie, Prentice Hall, 1988. (I strongly recommend that you purchase your own copy of this textbook and keep it even after this semester. This book will serve as one of the single most useful and important reference books beyond this course.)

Course Description

The architecture and programming of digital computers. Data representation. Processor, memory and I/O organization. Instruction set architectures, encoding and addressing modes. I/O techniques. Interrupts. Assemblers, macro-processors, compilers, interpreters, linkers, loaders. Assembly and machine language programming. C programming language constructs (control and data structures, pointers, arrays and functions) and their relationship to the underlying architecture. Supervised laboratory work involves programming and debugging using machine language, assembly language and C.





Required for Major: Successful completion of CS-220 is required for a Computer Science major


Course Objectives[TB1] 

Upon completion of this course students will understand:

       how to write application software.

       how to develop software using C.

       implications of other CS topics (architecture, languages, operating systems, algorithms, etc.) on application development.

Main Topics

       Binary Integer and Floating Point Arithmetic

       C syntax, declarations, operators, control structures, arrays, pointers, etc.

       C compilation, link edit, and load

       X86 ISA and X86 assembler and Object code

       X86 32 bit Calling conventions

       Heap management

       Buffer Overflow attacks

       Time Slicing and Resource Sharing

       Introduction to asynchronicity in Software

       Virtual memory and Cache Memory

Lecture Notes

Lecture Notes for each lecture will be posted on the class web-site in PDF format before lectures. Lecture notes do not substitute for class attendance, since (i) they will not be complete and (ii) significant parts of lectures, including discussions and in-class exercises, may not come from the class notes.


Your grade will be based on

Pop Quizzes, Attendance, Class Participation








Tests (2 tests 10% each)


Final Exam



Tests Tests will be in class, closed notes, and closed book, unless otherwise specified (unlikely). The first test will take place near the beginning of October, the second, near the beginning of November. You must complete the test in the time given. Unexcused absence from the test will result in a zero grade for that test. Test grades will be posted on Blackboard as soon as they are available.

Attendance Formal attendance will not be taken for each lecture or lab, but attendance is expected. There will be several un-announced quizzes administered throughout the semester during lecture or lab periods. Unexcused absence from a quiz will result in a zero grade for that quiz. Quiz grades will be posted on Blackboard as soon as they are available. If you cannot attend a lecture or lab, e-mail the professor before the lab or lecture, and make sure you consult with the professor or TA during office hours afterwards to ensure you know what you missed.

Homework Short homework assignments will be posted on the class web page approximately a week before homework is due. The assignments should not take a long time (about an hour), but are typical test questions, and will serve as good practice for the tests and exam. Please compose answers in a computer text file (with a file extension of .txt) and turn in homework assignments on Blackboard. Answers will reviewed in class after the due date, and posted on the class web page. Late homework, turned in after the deadline, will get an automatic 50% deduction. Homework will not be accepted after the answers have been reviewed in class. Homework grades and feedback will be posted on Blackboard as soon as your submission has been graded.

Labs Lab instructions will be posted on the class web page prior to the start of the first lab section. Either the TA or the Professor will be available to answer questions during the lab period. You are encouraged to work together during labs, but may work on your own. If you work as a team, make sure that every member of the team understands the lab material! Material covered in the labs will appear on quizzes, tests, and the final exam. A link to a short list of questions will appear at the end of the lab. If you have completed the lab these questions should not take more than 15 minutes to answer. Please compose answers to those questions in a text file (with a file extension of .txt) and submit those answers on Blackboard, due by 12:00 Midnight of the Friday following the lab. Lab write-ups will not be accepted after that time. Lab grades will be posted on Blackboard once they are available.

Projects There will be four long-term programming/debugging projects assigned throughout the semester. The instructions for each project will be posted on the class web page. Each project will require a significant time to complete. Please get started on these projects early – if you wait until a week before these projects are due, you will not get good grades! Project assignments are expected to run on the CS LDAP accounts, so please test them there. Project solutions will be submitted on Blackboard. More specific submission and grading instructions will be included in the project instructions. Late projects will result in a 10% deduction for every day the submission is late. The lowest project grade will be dropped, and the remaining three will be averaged.

Getting Help Please utilize the instructors and TA’s office hours for questions and discussion of course related material. Our job is to make you successful, and office hours are a great way to get help. E-mail the instructor or TA’s if you need an appointment outside of office hours, or e-mail questions or discussions to the professor directly.

Partial Credit In this course, we commonly give partial credit to partially correct answers. For that reason, it is always recommended to show your work in developing a solution for homework, test questions, lab questions, and projects.

Academic Honesty Expectations

Please review the academic honesty document and make sure that you understand it! The link is at: Cheating and copying will NOT be tolerated.


Students are encouraged to help one another and to form study groups. In Computer Science, you can learn more from your peers than from your instructors and teaching assistants. As long as the help is appropriate, please be generous with your time and expertise when helping fellow students. Doing so is good for you and good for them. You are free to discuss assignments in general terms with one another. However, please do not show your work directly to other students. Each student must complete your assignments individually (unless indicated otherwise by the instructor). Each of you must write your own code, and you must write up all solutions individually. Students submitting solutions (including code) that are determined to be “too similar” are likely to be punished equally and harshly. We can tell whether you have done the work on your own, so please do the work on your own.

 [TB1]As described in the Rubrics Documents for the Computer Science Program, Appendices RXX-RYY, this course addresses aspects of outcomes: b, c, i and k.