COSC 273A
Computer Organization & Architecture

Fall 2021

Syllabus

Instructor

David A. Sykes, Ph.D.

Class sessions

TR 9:30–10:50 A.M. in Olin 103

Office hours

TR 8:30–9:20 A.M., 2:30–3:30 P.M.
MWF 9:30–11:00 A.M, 1:00–2:30 P.M.
Or by appointment or happenstance.

Telephone / e-mail

(864) 597-4524 / sykesda@wofford.edu

An introduction to computer organization and principles of computer design. Topics include digital logic and digital systems, machine level representation of data, instruction sets, CPU implementation, memory system organization, I/O and communication, and assembly language programming. Prerequisite: "C" or better in Computer Science 235.

We will study digital logic, Von Neumann architecture, data representations, the fetch/execute cycle, instruction formats and addressing, machine and assembly language, memory structure, interrupts, and input/output.

By the end of this course, you should be able to:

  • Construct digital logic circuits to implement a variety of operations and chips and then from them construct a simple computer.
  • Explain the components of the von Neumann architecture and how they interact.
  • Understand how bits can represent values of various data types, including integer values, real number values, character values, and bit strings.
  • Know what an assembler does and write programs in assembly language.
  • Use bit twiddling to implement algorithms.
  • Identify the major components of a computer and explain what each does.
  • Understand the roles of high-level programming languages and operating systems in computer systems.
  • Explain how a function call semantics are implemented on a computer.
  • Explain why interrupts are useful and how a CPU handles them.
Required textbooks
  1. Code: The Hidden Language of Computer Hardware and Software by Charles Petzold, Microsoft Press. October 11, 2000. 400 pages (softcover). ISBN: 0-7356-1131-9.
  2. The Elements of Computing Systems: Building a Modern Computer from First Principles by Noam Nisan and Shimon Schocken, June 2005. ISBN: 9780262640688. It has a companion website. Note: The first six chapters are available via links from Projects.
Web resources

We will use these web applications this semester (and other):

  1. Mimir Classroom. You will need to create an account (free) using your Wofford email address. Homework exercises and some projects will be administered from within Mimir Classroom.
  2. Piazza. The class page will host announcements, descriptions on homework assignments, handouts, and discussions about class topics and projects. If you have a question that comes up outside of class time, post it at Piazza. Note: You may post anonymously, but be aware that your post will be anonymous only to classmates and not to me.
  3. Moodle. You will submit some some project files in Moodle. Your scores for graded work (quizzes and projects) will be recorded in the Moodle gradebook, too.

Software

We will use two computer applications:

To run these apps, you might need to download and install Java from Java SE Downloads if you have not already installed Java on your computer. Both applications have been installed on the Macs in the Computer Science Lab (Olin 112A). Use one of the lab computers if you can’t run it on your own computer. Be sure you do not leave your files on a lab computer’s storage.

Your grade for the course will be based on a weighted average of scores for homework, tests, projects, and a final exam. The usual grading scale applies: 93–100: A, 90–92: A-, 87–89: B+, 83–86: B, 80–82: B-, 77–79: C+, 73–76: C, 70–72: C-, 60–69: D, 0–59: F.

A final average will be calculated using two methods using weightings shown in the table. The higher of the two values will be mapped to a letter grade. Note: The Moodle Gradebook will reflect Method #1 weightings.

Component Weighting #1 Weighting #2
Homework 25% 10%
Projects 35% 35%
Tests 30% 15%
Final exam 10% 40%
TOTAL 100% 100%
Homework

Homework assignments help you to prepare for class. Homework will usually consist of some reading and some exercises. Homework is due before the start of the class meeting for which it was assigned.

You are allowed to use any resources you find useful for completing homework assignments, including working with other students in the class. Your primary goal should be to get a perfect score on every homework assignment so you will be prepared for the next class meeting.

The homework component of the final weighted average is computed using a simple weighted mean of scores: the percentage obtained by dividing the sum of points you earned by the sum of point values for the assignments. For example, let's say there are two assignments, the first worth 15 points and the second worth 25 points. If your score on the first assignment is 9 and your score on the second is 21, then your score for both is (9 + 21) ÷ (15 + 25) = 75%. Note that the result can be different from averaging the percentage scores for the two assignments, ((9 ÷ 15) + (21 ÷ 25)) ÷ 2 = (60% + 84%) ÷ 2 = 72%.

Tests

You will take two tests. The first, on October 12, will cover up through sequential logic. The second, on November 11, will cover up through machine language and computer architecture.

You may bring an index card, maximum size 6"×9", containing handwritten notes to each test.

Projects

Projects play a central role in this course and comprise 35% of your final grade. It is important to complete each project successfully and working on your own.

Final exam

The final exam is comprehensive, covering the material on the first and second tests as well as material covered after the second test. The objective of the final exam is to assess how well you achieved the objectives for the course.

You may bring an index card, maximum size 6"×9", containing handwritten notes to the final exam.

Logistics

Most class meetings will start with a brief review of the homework assignment and continue with discussions and/or exercises based on what has been covered so far. Some in-class exercises will require you to work on a laptop computer or work with another student in the class. You may have a laptop computer open on your desk only if I direct you to use it. Most projects will be started during a class meeting.

You are encouraged to take copious notes during class. Take handwritten notes on paper or on a tablet.

Handwritten notes engage more of the senses. The brain is more active, so the learning process is enhanced. This is actually part of an area of study called “haptics.” Researchers in this arena are studying the way our minds and bodies interact in the learning process.

It’s the “tactile” or “kinesthetic” learning idea in action. The more physically active you are, including taking handwritten notes, the more likely you are to remember information well.

Attendance

You are expected to attend class meetings. The Class Attendance Policies described in the Wofford College Student Handbook (pp. 81ff) makes you responsible for catching up on missed classes. I suggest you find a "buddy" from whom you can get notes in the event you are absent. I will post links to handouts in Piazza.

Do not attend class if you are not feeling well and might have a contagious illness. Seek medical attention at the Wellness Center. A doctor's note concerning absences is not required.

The final exam period is scheduled for 2:00-5:00 P.M. on Tuesday, December 14, 2021. You must be present for the exam.

Late work

You are expected to complete all assigned work on time.

I understand that sometimes you must miss a class, a test, or a project or homework deadline. As long as such occurrences are not excessive, I will work with you as best I can to help you succeed in the course.

You must meet homework and project deadlines. To submit your work late, you must contact me no later than 2:00 P.M the day before the deadline to request an extension. Your request must indicate how much more time you need. I will still expect you to submit by the deadline the work you have completed so far even if you are given an extension. If you do not hear back from me, assume you have an extension.

Communication

Piazza

All questions about coursework, including about projects, must be posted at the Piazza Q&A page. If you send me a question via email or via private post that should be posted publicly at Piazza, I will direct you to post your question publicly. After you post it publicly, I will reply to the question.

Do not post working code at Piazza. Do not include in a response either “fixed” code or a detailed description of how to change code to get it to work. It is acceptable to post non-working code.

Feel free to respond to a question or to edit a response to a question. We are all learning together.

Note: Anonymous Piazza posts are anonymous to classmates but not to me.

Email

It is appropriate to send me email messages for private matters, such as letting me know you will be absent or that you’d like to schedule a meeting.

I usually respond to email messages sent Sunday through Thursday within 24 hours and within 48 hours when sent on a Friday or a Saturday. I usually respond much sooner to Piazza posts since I have the Piazza app on my phone and receive notifications.

Academic integrity

The Honor Code requires faculty, staff, and students to maintain a high standard of individual honor and integrity. Work represented as your own must be your own.

I encourage you to help others in the class or get help from others on projects. However, you may not write code for another student or provide code to copy. Conversely, you may not get code from another student. Doing any of these things is a violation of the Honor Code.

There is a distinction between collaborating and cheating.

When collaborating,

  • One person may discuss a problem or algorithm with another person.
  • One person may work with another person to figure out how to attack a problem.
  • One person may describe a problem and get suggestions for solving it.
  • One person may describe to another person what some code must do, but not provide that code.
  • One person may help another person to debug code, but must not type the working code.

Ultimately, you must implement a solution to the problem yourself.

On the other hand, cheating occurs when

  • One person copies code from another person or copies code available on the internet.
  • One person allows another person to copy code.
  • One person edits another person’s code, either to write new code or fix a bug in existing code.
  • Two people are working along with another and decide together what code to write, even if they are working on separate computers.

For some projects, you might be given an option to work with one other student in the class. In this case, you are allowed to share all your work with your teammate. However, you are expected to do all of the work together. One student should not work without the other present. However, one of you may meet with me without the other being present.

Don’t cheat because you are up against a deadline. Manage your time effectively. Start each assignment as soon as it is given. If you run into a glitch:

  • Seek help from me.
  • Submit on time the work you have done, even if it is not fully completed. You will likely get partial credit for your work.

Access and Accommodations

It is the policy and practice of Wofford College to create an inclusive and accessible learning environment. This course is intended for all students, including those with mental or physical disabilities, illness, injuries, impairments, or any other condition that tends to negatively affect one’s equal access to education.

If you have not yet established services through Accessibility Services, but have a temporary health condition or permanent disability that keeps you from fully accessing the space, content, and experience of this course, you are welcome (but not required) to visit the Accessibility Services Accomodations channel in my.wofford.

If you have already established accommodations with Accessibility Services, please communicate your approved accommodations to me at your earliest convenience so we can discuss your needs in this course.

This is the plan for the semester. It is subject to change, although I will do everything I can to stay on schedule.

If the schedule shows a chapter for a class meeting, then you should have read that chapter and completed any homework associated with that chapter before the start of the class meeting on that date. If the schedule shows a project, then we will spend at least part of the class meeting on that date getting started on that project.

Fall Semester 2021
Mon Tue Wed Thu Fri
Sep 1
Sep 2
  • Syllabus review
  • Get started
Sep 3
Sep 6
Sep 7
  • Basic concepts
Sep 8
Sep 9
  • Chapter One
  • Chapter Two
  • Chapter Three
  • Chapter Four
Sep 10
Sep 13
Sep 14
  • Chapter Five
  • Chapter Six
  • Chapter Seven
  • Chapter Eight
Sep 15
Sep 16
  • Chapter Nine
Sep 17
Sep 20
Sep 21
  • Chapter Ten
Sep 22
Sep 23
  • Chapter Eleven
Sep 24
Sep 27
Sep 28
  • Chapter 1
  • Project 1
Sep 29
Sep 30
  • Chapter Twelve
  • Chapter Thirteen
  • Chapter 2
Oct 1
Oct 4
Oct 5
  • Chapter Thirteen
  • Project 2
Oct 6
Oct 7
  • Chapter Fourteen
Oct 8
Oct 11
Oct 12
  • Test #1
Oct 13
Oct 14
  • Chapter 3
Oct 15
Oct 18
Oct 19
  • Chapter Fifteen
  • Chapter Sixteen
Oct 20
Oct 21Fall Academic Holiday Oct 22Fall Academic Holiday
Oct 25
Oct 26
  • Project 4
Oct 27
Oct 28
  • Chapter Seventeen
  • Chapter Eighteen
Oct 29
Nov 1
Nov 2
  • Chapter 5
  • Project 5
Nov 3
Nov 4
  • Chapter 6
  • Chapter Nineteen
Nov 5
Nov 8
Nov 9
  • Project 6
  • Chapter Twenty
  • Chapter Twenty-One
  • Chapter Twenty-Two
Nov 10
Nov 11
  • Test #2
Nov 12
Nov 15
Nov 16
  • Chapter Twenty-Three
  • Chapter Twenty-Four
Nov 17
Nov 18
  • MIPS architecture
Nov 19
Nov 22Thanksgiving break Nov 23Thanksgiving break Nov 24Thanksgiving break Nov 25Thanksgiving break Nov 26Thanksgiving break
Nov 29
Nov 30
  • MIPS architecture
  • Project 7
Dec 1
Dec 2
  • MIPS architecture
Dec 3
Dec 6
Dec 7
  • MIPS architecture
  • Project 8
Dec 8
Dec 9
  • Wrap-up
Dec 10
Dec 13 Dec 14
  • Final Exam 2:00–5:00
Dec 15 Dec 16 Dec 17