Computer Science 220
Assembly Language & Computer Architecture

Fall 2010, Siena College

Syllabus

Instructor:

Dr. James D. Teresco, Roger Bacon 332, (518) 783-4171
Electronic mail: jteresco AT siena.edu (best contact method)
Class URL: [Link]
Class hour: Tuesday, Thursday 10:00-11:20, Roger Bacon 328
Lab meetings: Tuesday 2:00-4:00 or Friday 10:25-12:25, Roger Bacon 306
Office hours: Monday 2-3, Thursday 1:30-3:30, Friday 2-4, by appointment

Disclaimer

Everything on this syllabus is subject to change. Changes will be announced in class and updated in the online version of the syllabus.

Course Objectives

From the course catalog: "An introduction to assembly language programming using a specific assembly language (for example, VAX, Intel, or MIPS assembly language). Addressing techniques, internal computer components, machine language, subroutines, and parameter passing will be discussed. The course also covers topics in computer architecture including memory systems organization, interfacing and communication, functional organization, and multiprocessing architectures."

This semester, we will focus less on assembly language programming and more on computer organization issues.

Course Goals

  1. Develop an understanding of computer hardware and low-level software.
  2. Identify and understand the key levels of abstraction in modern computer architectures.
    1. transistors and digital logic gates
    2. combinational circuits including arithmetic and logic units
    3. sequential circuits including clocks and memory
    4. design of an instruction set architecture (ISA)
    5. data paths and control for a microarchitecture, including single-cycle and pipelined systems
    6. execution of machine instructions of a given ISA within a microarchitecture
  3. Adapt knowledge of high-level language programming to use the C language.
  4. Achieve basic proficiency in assembly language programming including common instructions and addressing modes, translation of expressions and control structures, register management, procedure calls, and stack protocols.
  5. Learn how to use the command-line and window-based interfaces of a Unix-like environment.
  6. Understand the overall design of modern processors, including multiprocessors.

Missions and Learning Goals

Please be sure you are familiar with the following statements of mission and learning goals by visiting these links:

Prerequisites

Texts

The required text for the course is Computer Organization and Design, The Hardware/Software Interface, Fourth Edition (Elsevier, 2009, ISBN 9780123744937) by Patterson and Hennessy. This is available from the Siena Bookstore (and elsewhere). If you buy elsewhere, be sure to get the correct edition.

Lectures

Everyone is expected to attend class and participate in discussions. Supplemental readings are listed on the lecture and reading schedule. Of course you are encouraged to do the reading, but all important topics will be covered in class.

The notes I use to guide my in-class presentations are available as PDF files linked from the lecture and reading schedule.

Be prompt, prepared, and ready to focus on the day's topics. This should go without saying, but this means your phones and other devices not being used exclusively to follow along with class materials and/or to take notes must be powered off. You may bring food or drink to class, as long as you are not a distraction to your classmates or instructor.

Most lectures will include a small assignment due at the start of the next class. No late submissions of these "lecture assignments" will be accepted, as they will often be discussed in class on the due date.

In this course we will be studying related but independent topics. We will switch among these topics frequently throughout the semester. The lectures are organized in this way so that you will have the opportunity to study and understand each topic, both in class and in the lab, before we study more advanced aspects of any closely related topic.

Labs

Labs are held on Tuesday afternoons and Friday mornings, usually in Roger Bacon 306. There will not be formal lab meetings every week, but attendance is required for the formal meetings. Typically, lab assignments will be handed out in class a few days before a lab meeting, you will work on the them during the scheduled lab time and on your own, and you will turn them in a few days later. The number of points available will vary with the complexity of the assignment. You may develop your programs anywhere (Computers in the lab, your own PC, etc.) but grading will be done using the Siena Computer Science Linux systems unless otherwise specified. It is your responsibility to ensure that your program works on the grading platform. Programming assignments will be graded on design, documentation, style, correctness, and efficiency.

Unless otherwise specified, late lab work may be turned in with a penalty computed as 1.08h%, where h is the number of hours late. Extensions will only be granted in serious situations and requests must be accompanied by written documentation from the appropriate college office (e.g., Academic Affairs for family emergencies, Student Affairs for personal illness). You can find a C program that prints out a table of the late penalties here. Work turned in after solutions have been made available cannot receive credit. All assignments are to be submitted electronically unless otherwise specified. Please submit plain text where appropriate and PDF otherwise. Please avoid other formats such as Word documents. If in doubt about a file format, please check first. Keep a copy of all submissions for yourself.

Exams

There will be two exams during the semester, plus one during finals period. Exams are tentatively scheduled to take place in mid-October and mid-November.

Grading

Grades for individual assignments and exams are not scaled. Any scaling deemed appropriate will take place at the end of the semester by adjusting the above thresholds. The following thresholds may be adjusted downward (thereby raising grades) but will never be adjusted upward.

Breakdown:

Scale:
Lecture Assignments 15% A >= 93% A- >= 90%
Labs 40% B+ >= 87% B >= 83% B- >= 80%
Exam 1 15% C+ >= 77% C >= 73% C- >= 70%
Exam 2 15% D+ >= 67% D >= 63% D- >= 60%
Final Exam 15% F < 60%

Academic Integrity

You are encouraged to discuss the concepts related to course assignments and exams with your classmates. This is an essential part of a healthy academic environment. However, work submitted for grading must be your own (or the combined work of group members, for group assignments). Any unauthorized copying or collaboration is considered a breach of academic integrity and will not be tolerated. Academic dishonesty cases are unpleasant and uncomfortable for everyone involved. You are responsible for reading and understanding the College Catalog Statement on Academic Integrity and the Computer Science Department's Academic Integrity statement. The minimum penalties for a first violation will include failure (0 grade) for the assignment or exam in question and the filing of a Academic Integrity Violation Accusation Form. A second violation will result in failure of the course and a formal letter describing your misconduct will be sent to the head of the Computer Science Department and the Office of Academic Affairs.

If there is any doubt about the degree of collaboration allowed or the permitted sources for a particular assignment, please ask for clarification before collaborating or consulting the source. Any such collaborations or sources must be cited properly.

Additional College Policies

Please be sure you are familiar with the following College policies by visiting these links: