CPSC 220:
Introduction to Computer Architecture

   Department of Mathematics and Computer Science
   Hobart and William Smith Colleges

   Fall 2018.

   Instructor:  David J. Eck  (eck@hws.edu)

   Monday, Wednesday, Friday, 12:20--1:15 PM, Gulick 2000
       Lab: Tuesday, 11:55--1:20, Rosenberg 009

About The Course

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.


Computer Labs and Assignments

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.


Tests, Exam, and Grading

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%

Attendance, Etc.

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!


No Technology During Lecture

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.


Statements from the Center for Teaching and 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 ctl@hws.edu or x 3351.


Office Hours, E-mail, WWW

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 eck@hws.edu.

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.


Tentative Schedule

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