Department of Mathematics and Computer Science Hobart and William Smith Colleges Fall 2018. Instructor: David J. Eck (firstname.lastname@example.org) Monday, Wednesday, Friday, 12:20--1:15 PM, Gulick 2000 Lab: Tuesday, 11:55--1:20, Rosenberg 009
Computer architecture studies how computers can be built as complex systems from very simple components. The fundamental question is how to make a physical device that can store and execute programs. Because the structure and function of a computer is intimately tied to the structure of the programs that it can execute, the language in which those programs is written—machine language—is also an important aspect of computer architecture. In fact, the design of the machine language is referred to as the instruction set architecture of the computer. Because people cannot, in practice, write machine language directly, a course in computer architecture will also typically study assembly language and the relationships among machine language, assembly language, and high level programming languages.
In addition to covering general principles of architecture design, We will study two specific instruction set architectures. One is the ARM architecture, which is used in many actual computing devices. In particular, it is probably used in the majority of smart phones and tablets. (We will actually use a subset of the AArch64 instruction set that is part of ARMv8.) The second architecture that we will look at is Larc, a very simple 16-bit architecture that was developed by Marc Corliss, a former HWS professor now working for Google. Larc is simple enough that we will be able to understand it completely, and you will build a working simulation of a Larc CPU in a Logisim, a program that simulates logic circuits.
You will also be doing some actual ARMv8 assembly language programming, using an IDE that lets you run ARM programs in an emulator. (One thing that you will not do in my version of the course is work with any physical hardware or circuits.)
The textbook for the course is Computer Organization and Design, ARM Edition, by David Patterson and John Hennessy (ISBN 0128017333). This book uses the ARMv8 architecture as its primary example. It is a rather advanced book, and we will cover only parts of it. While there will be readings from most chapters, we will not cover any chapter completely. We will cover some topics from the book that will not be covered at all in the lab, or will only be covered in very simplified form. Since this is an introductory course, the goal is to give you a reasonably firm grounding in the basic material, with lab experience to back it up, while at the same time giving you some background in more advanced topics that are central to modern computer architecture, such as pipelining and the memory hierarchy. These advanced topics are generally covered in more detail in a course on operating systems.
A copy of the textbook will be on reserve at the Library.
This course has a weekly required lab component. For each lab, there will be one or more exercises for you to turn in, and those exercises will constitute the large majority of homework for the course. On some labs, you will have the option of working in a group of two or three (in a few cases that might even be mandatory), but in most cases, you will be working on your own.
The labs will include programming in Java, working with a program that simulates logic circuits, and working with assembly language.
In addition to the labs, there will be some written homework assignments, starting with one on the first day of classes. Grades for labs and written homework will, together, count for 50% of your final grade in the course.
Labs and homework will not ordinarily be accepted late, but you should, of course, discuss it with me if you think that you have a sufficiently good reason for doing so.
There will be two in-class tests in addition to a final exam. The tests will be given on Wednesday, September 26 and Wednesday, October 31. The final exam will take place during the officially scheduled exam time for the course, which is Tuesday, December 18, at 7:00 PM. (This is the very last final exam period, and you should plan your travel arrangements accordingly.) The final exam will be in our regular classroom.
Your numerical grade for the course will be determined as follows:
First Test: 15% Second Test: 15% Final Exam: 20% Labs and Assignments: 50%
I assume that you understand the importance of attending class. While I do not take attendance in every class, I expect you to be present unless circumstances make that impossible. Participation in lab is particularly important, and I do take attendance at lab. If you miss a lab without a good reason, you can still turn in work for that lab, but your grade on the lab will be reduced.
If you miss a test or final exam without an extremely good excuse, you will receive a grade of zero. If you think you have an excuse for missing a test, please discuss it with me, in advance if possible. If I judge that your excuse is reasonable, I will—depending on the circumstances—either give you a make-up test, or I will average your other grades so that the missing grade does not count against you. A missed final exam is a much bigger deal; please try to avoid it!
I ask that you refrain from using any technology (beyond pen/pencil and paper) in lecture, unless you have a verified need to take notes on computer. This includes laptops, tablets, and cell phones.
There is substantial research showing that taking notes on paper can improve retention of the material, compared to note-taking on computer. My real advice is to take notes in outline form, noting down important ideas and examples, and to make a more formal copy of the notes after class, filling in any missing details. There is also research showing that the multitasking that you are likely to engage in if you have a computer open in front of you is detrimental to learning.
At Hobart and William Smith Colleges, we encourage you to learn collaboratively and to seek the resources that will enable you to succeed. The Center for Teaching and Learning (CTL) is one of those resources: CTL programs and staff help you engage with your learning, accomplish the tasks before you, enhance your thinking and skills, and empower you to do your best. Resources at CTL are many: Teaching Fellows provide content support in 12 departments, Study Mentors help you manage your time and responsibilities, Writing Fellows help you think well on paper, Q Fellows support you in courses that require math, and professional staff help you assess academic needs.
Disability Accommodations: If you are a student with a disability for which you may need accommodations, you should self-identify, provide appropriate documentation of your disability, and register for services with Disability Services at the Center for Teaching and Learning (CTL). Disability related accommodations and services generally will not be provided until the registration and documentation process is complete. The guidelines for documenting disabilities can be found at the following website: http://www.hws.edu/academics/ctl/disability_services.aspx. Please direct questions about this process or Disability Services at HWS to Christen Davis, Coordinator of Disability Services, at email@example.com or x 3351.
My office is room 313 in Lansing Hall. My office phone extension is 3398. I am on campus most days, and you are welcome to come in anytime you can find me there. My office hours will be posted on my office door and on the course web page. (But note that your office visits are certainly not restricted to my regular office hours!)
My e-mail address is firstname.lastname@example.org.
The home page for this course on the World Wide Web is located at http://math.hws.edu/eck/cs220. This page will contain a weekly guide to the course and links to lab worksheets.
Here is a very tentative schedule for this course. The schedule indicates approximately what I would like to cover. However, I will modify the schedule as necessary, depending on how things go. See the course web page for the actual week-by-week schedule. Readings listed here are from the textbook, Computer Organization and Design, except where indicated. There might be additional handouts.
|Dates||What's happening||Possible Lab|
|Aug. 27 – 31||Introduction and overview (and binary numbers). Reading: Sections 1.1–1.4; 2.4.||Bitwise ops and number bases in Java|
|Sept. 3 – 7||The 16-bit Larc ISA. Reading: Larc manual, Chapter 3 (handout); Section 1.6.||Machine language programming for Larc|
|Sept. 10 – 14||Basic ARM assembly. Reading: Sections 2.1–2.3.||Writing a Larc Simulator, 1|
|Sept. 17 – 21||ARM machine language and branching. Readings from Sections 2.5–2.10.||Writing a Larc Simulator, 2|
|Sept. 24 – 28||Test on Wednesday, September 26.
Introduction to logic circuits.
|ARM Assembly Language Programming|
|Oct. 1 – 5||Combinational circuits and basic memory circuits. Reading: A.3 and A.5.||Introduction to Logisim|
|Oct. 10 – 12||Fall Break: No class on Monday.
More on circuits. Reading: A.7 and A.8.
|Basic Circuits in Logisim|
|Oct. 15 – 19||Design of a CPU for Larc; Adding and Multiplying. Reading: Sections 3.2 and 3.3.||Larc in Logisim, 1|
|Oct. 22 – 26||Division and floating point arithmetic. Reading: Sections 3.4 and 3.5.||Larc in Logisim, 2|
|Oct. 29 – Nov. 2||Test on Wednesday, October 31.||Arm Assembly: Floating Point|
|Nov. 5 – 9||Implementing subroutines. Reading: Sections 2.7 and 2.9.||Arm Assembly: The stack and subroutines|
|Nov. 12 – 16||Designing a datapath for ARM. Reading from Sections 4.1–4.4.||Arm Assembly in C|
| Nov. 19 – 23
Thanksgiving Break. No Classes.
|Nov. 26 – 30||Pipelined architecture. Readings from Sections 4.5 4.9.||Writing an Assembler, 1|
|Dec. 3 – 7||The memory hierarchy. Readings from Sections 5.1–5.7.||Writing an Assembler, 2|
|Dec. 10||Last day of class; wrap up the course.|
|Dec. 18||Final exam, Tuesday, December 18, 7:00|