CmpSci 201 Spring 2005 Course Syllabus -------------------------------------- Instructor: Trek Palmer Office: 354 CmpSci Building Telephone: 545-0256 E-Mail: trekp@cs.umass.edu Office Hours: 10-11 MF (after class, basically), and by appointment Web Site: http://www.cs.umass.edu/~trekp/cs201 Course Overview: The goal of this class is to impart to the students an understanding of modern computer organization. The fetch-decode-execute cycle will be examined in detail, as will numerical representations, digital gates and logic, boolean algebra, hardware/software interfaces, memory hierarchies and I/O. Course work will consist of homework and 4-5 programming projects. There will be two midterms and a final exam. Course Web Site: The course website will have all assignments and project descriptions posted to it. In addition, it will have links to the various tools necessary to complete the assignments. Textbook: The textbook we will be using is "Computer Organization" fifth edition by Carl Hamacher, et al. Late Policy: The homework solutions will be posted to the web page and reviewed in the discussion section, so no credit will be given for late submissions. For projects, every day late will be a full letter grade reduction in the final grade for the project. Exams will be given in class. Do NOT miss an exam. Only if unavoidable circumstances prevented you from taking the exam will you be allowed to make up said exam. Projects: The project descriptions will be posted on the website as they are assigned. The amount of time allowed for a project varies from 2 to 4 weeks. There will be 4 or 5 projects (depending on how fast the class moves). Each description will have detailed discussion of submission guidelines. The projects will all be done in ARM assembly (using the ARM syntax). The code itself will be submitted. You may use any development platform you like, however I recommend that you use the rolecks software package provided on the course web site. I and the TA(s) will instruct the class in the usage of this tool. Grades: Your final grade will be a weighted sum of your individual grades. The approximate weightings are: 15% Homework 40% Projects (divided evenly between all projects) 15% Midterm 1 15% Midterm 2 15% Final From this breakdown, it is obvious that attention should be paid to all parts of the course work. Policies: Attendance: Regular attendance is required and recommended. I will not take attendance before each lecture (but will occasionally take attendance), but it is safe to say that students who do not attend lectures will do considerably worse than students who do. Announcements made in class are considered official communications, and if you miss them, you miss them. Academic Honesty: You may discuss the homework and projects with classmates, and are encouraged to do so. But all work (homework and projects) must be your own. Do NOT share code and homework solutions. Seriously, don't cheat. Cheating will seriously impact your coding skills, and if I catch you I'm not going to be happy. Unhappy professors are not known for giving passing grades to students who render them unhappy. Also, breaking into someone's account and taking their code (or just lifting a printout from the printer tray) is also tantamount to cheating. Don't do it. I refer you to the unhappy professor comments above. Remember, in addition to any academic penalties I generate, the University itself may penalize students for cheating. Rough course schedule: Week1: Course Overview, Computer Org. Intro Week2: Numerical Representation, Binary Arithmetic, ARM Intro *P1 Assign* Week3: Branches, Arithmetic operations, Static data Week4: Logical and Shifting ops, More branches, Simple I/O *P1 Due/P2 As.* Week5: Addressing modes 1, Review for midterm1, Midterm 1 Week6: More addressing modes, Subroutines *P2 Due/P3 As.* Week7: Floating Point, Dynamic memory Week8: *Spring Break* Week9: Boolean Algebra, Combinational Logic *P3 Due/P4 As.* Week9: Sequential Circuits, Muxes Week10: Buses, Memory intro, Review, Midterm 2 Week11: Advanced I/O, Interrupts & OS support *P4 Due/P5 As.* Week12: Cache, Virtual Memory Week13: Pipelines, Disks/Secondary Storage Week14: OS issues, ABIs, Binary Formats, Libraries Week15: Review for Final exam, Overflow lectures *P5 Due* Hints and stupid tricks to do well: You have probably already heard this, but it bears repeating: start your projects as soon as possible. The earlier you start, the quicker you'll get done. Not because you have more time to write code, but because you have more time to make mistakes and think about fixing them. If you start early, you'll be out partying while the slackers are pulling all-nighters in the edlab.