Course Syllabus

CS-220: Computer Systems II

Spring 2016

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



Instructor:   Tom Bartenstein  E-Mail:

Office Hours: See class Web Page.


Computer Systems: A Programmer’s Perspective, Third Edition, Randal E. Bryant and David R. O’Hallaron, 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 you your entire career as the single most useful and important reference book on the C language.)

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

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


Most of the components of your grade will appear on blackboard, but your final average will include components that are not published.  The mapping from a numeric average to a letter grade is not pre-defined, but will be determined by the instructor once all averages have been computed, based on class performance and comparison to previous CS-220 classes.


Participation 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.  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.  Your participation grade will include of an average of the quiz grades, where the numerator is the sum of the quiz grades you received, and the denominator is the number of unexcused quizzes given.  Another component of the participation grade will be the professor’s subjective evaluation of participation, including the number of times you answer/ask questions in class and lab, and the number of times you ask for extra help during office hours.


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 similar to 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 be 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 lowest project grade will be dropped, and the remaining three will be averaged. 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.


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 March, the second, near the middle of April.  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.

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 We commonly give partial credit to partially correct answers in this course. 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.


Collaboration 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.