August 26, 2012
Learn how primitive computer operations are implemented with gates, flipflops, etc, as well as how to understand claims about computer speed. Topics include design of combinatorial and sequential logic circuits, RISC vs. CISC architectures, microcode, pipelining, parallelism, cache memory.
This course assumes you’ve passed a course in assembly language (e.g. Adelphi’s CSC 174). In this course we’ll use MIPS assembly language, because that’s what the textbook uses, but we’ll spend a few days discussing the differences between MIPS, Intel, and other assembly languages.
I also assume you’ve passed a discrete math course such as Adelphi’s CSC/MTH 156 covering Boolean logic and algebra, graphs and trees, sets, etc.. And I assume that students have a year or two of programming experience in a high-level language (Java, C++, Scheme, etc.)
You’ve all taken an assembly-language course, although few if any of you will need to write assembly language in your careers. The main reason for the assembly language course is to help you understand what’s going on “under the hood” to make your high-level-language programs work, in hopes that you can make better design decisions about those programs.
This is a course about how a computer works, at the hardware level. Few if any of you will become hardware engineers, although this course is a good start if you want to do so. The main reason for this course is to help you understand what’s going on “under the hood” to make an assembly-language program (or the compiled version of a high-level-language program) work. Again, the hope is that by understanding how the processor and memory work, you can write more-efficient programs and make better-informed decisions on computer purchases.
By the end of this semester, you should be able to
Compare the execution time of a given program on different computer systems with specified clock speeds, CPI figures, instruction counts, degrees of parallelism, etc.
Apply Amdahl’s Law to predict the performance improvements from various kinds of optimizations
Read and write short MIPS assembly-language programs (say, under a hundred lines)
Design combinational circuits from simple gates (e.g. majority and parity circuits, multiplexers and selectors, multi-bit adders and subtracters, multi-operation ALU’s)
Read and write binary representations of integers, floating point numbers
Design sequential circuits from simple gates and flipflops (e.g. to implement finite-state machines)
Trace the passage of a sequence of instructions through a multi-stage pipeline, identifying data and control hazards
Identify and alleviate data and control hazards in an assembly-language or high-level-language program
Trace the movement of code and data among levels of a memory hierarchy (e.g. virtual memory on disk, RAM, one or more levels of cache, and registers)
Design an assembly-language or high-level-language program to make efficient use of the memory hierarchy
Identify opportunities for and obstacles to parallelism in an assembly-language or high-level-language program
Discuss the properties and uses of various I/O devices
We’ll use the textbook Computer Organization and Design: The Hardware/Software Interface by Patterson and Hennessy. The textbook is available on paper or as an e-book. The paper version comes with a CD; the CD contents are available for download at http://www.elsevierdirect.com/companions/9780123747501/CD_ROM_Files.zip
As I write this (a week before classes start), I envision five homework assignments, each worth 15% of the semester grade, a final exam worth 20%, and a 5% “brownie points” grade. You gain brownie points by asking and answering good questions in class, participating constructively, etc. You lose brownie points by cheating, being a pain in class, etc.
Some of the homework assignments will require that you write programs in assembly language. Programs are not abstract works of art, they are supposed to run and solve real problems. So if I get a program that doesn’t assemble, or a program that has little or nothing to do with the problem I assigned, I will give it a zero, no matter how much time you put into it. Don’t bother turning in a program you haven’t tested yourself.
Other homework assignments will require that you design circuits from gates. I plan to do this using the Logisim digital logic simulator, which you can download for free from http://sourceforge.net/projects/circuit/. You should be able to save your circuit design as a file and e-mail it to me.
A third category of homework assignments are essay questions, mostly from the textbook. You can turn these in on paper, but I'd prefer e-mail because I'm less likely to misplace it.
Homework and programming assignments will be accepted late, with a penalty of 25% per 24 hours or portion thereof after they’re due. An hour late is 25% off, 25 hours late is 50% off, and after four days don’t bother turning it in. It’s still a good idea to do as much of it as you can, however, because I’ll assume on the exams that you’ve done the homework. Any homework turned in after the last day of class (Dec 6, unless there’s an unplanned cancellation) will not be graded; this is so I have some hope of grading all your homework before the final exam.
Exams must be taken at the scheduled time, unless arranged in advance or prevented by a documented medical or family emergency. If you have three or more exams scheduled on the same date, or a religious holiday that conflicts with an exam or assignment due date, please notify me in writing within the first two weeks of the semester in order to receive due consideration. Exams not taken without one of the above excuses will be recorded with a grade of 0.
Most of the assignments in this class are to be done individually. You may discuss general approaches to a problem with classmates, but you may not copy large pieces of programs or homework solutions. If you do, all the students involved will be penalized.
All work on an exam must be entirely the work of the one person whose name is at the top of the page. If I have evidence that one student copied from another on an exam, both students will be penalized; see above.
I expect you to be in the classroom at 3:05, and to still be there at 4:20; if you’re not present, and miss some important material, it’s your problem. If you must miss a class, arrive late, or leave early, please let me know as far in advance as possible. I don’t explicitly grade on attendance, but consistent lateness or absence will impact the “brownie points” part of your grade.
If you have a disability that may impact your ability to carry out assigned course work, and are not enrolled in the Learning Disabilities Program, please contact the staff in the Disability Support Services Office (DSS), University Center, Room 310, (516) 877-3145. DSS@adelphi.edu. DSS will review your concerns and determine, with you, appropriate and necessary accommodations. All information and documentation of disability is confidential.
In particular, you may choose whether, and in how much detail, to discuss your disability with the instructor.
During the last two weeks of the class, you will be informed, via email and eCampus, that the University’s online course evaluation form is available for your input. It will no longer be available after the beginning of final-exam week, so make sure you fill it out before then. They don’t show me any of the results until after I’ve turned in semester grades. We really do take this stuff seriously in deciding what to do differently in future courses, so please give detailed feedback (something more specific and useful than “this course sucks!” or “this course rocks!”).
This class meets every Tuesday and Thursday from 3:05 to 4:20 PM, except on University holidays or if I cancel class. A schedule of topics, reading assignments, and homework assignments will be on the Web at http://www.adelphi.edu/sbloch/class/371/calendar.html. The dates are subject to change depending on how classroom discussions actually go; if some topic listed here as taking one lecture in fact takes two lectures to cover adequately, or vice versa, the schedule will shift. I expect you to have read the reading assignments before the lecture that deals with that topic; this way I can concentrate my time on answering questions and clarifying subtle or difficult points in the textbook, rather than on reading the textbook to you, which will bore both of us. Please read ahead!