CS 2461: Computer
Architecture I
Instructor: Prof Bhagi Narahari
narahari@gwu.edu
Class Schedule: Tues, Thurs
2:20--3:35pm, SEH 1300-1400
Fall 2019 Office Hours: Tues 12-1pm, Thursday 11am-12pm, or by appointment
Course Outline
This is an introductory course on Computer organization and computer
systems.
The course will expose the student to the different
layers in
a computer system and examine the working of a computer system at these
different levels. It will expose the student to the low level details
of how
machines are assembled and the tools to program them -- it will expose
what
really happens when your programs are run, thereby providing you with
the
intellectual tools needed to solve problems when things go wrong. In
addition
to the theoretical concepts, the course through the lab section will
provide
introduction to systems programming in the Unix environment using
standard
tools and focusing on issues such as performance and correctness. The
course
will take a bottom-up approach: it will start with the basic components
of a
computer system, machine representation of data, digital logic
circuits,
instruction sets and assembly programming, and then it uses the C
language and
the Unix operating system to study system level aspects such as memory
management, file systems, safe programming, system stack, debugging and
performance tuning of programs. The course will also expose students to
working in teams. The lecture, and some lab sessions, will consist of
in-class activities and students will be required to work in teams.
Course Objectives
- to understand the structure and operation of modern computer
systems
- understand basic hardware concepts (digital circuits -- gates,
number representation, combinational and sequential circuits)
- understand the von Neumann architecture and computing model
(structure and operation, assembly language, memory)
- understand basic system concepts (runtime stack, I/O, using
Unix operating system, compilers)
- to understand how high level language constructs, such as C, are
implemented in a machine assembly language
- understand how performance is linked to program and machine
properties
- cooperative learning and learn to work in teams.
https://www2.seas.gwu.edu/~bhagiweb/cs2461/
Learning Outcomes
- Design combinational and sequential logic circuits.
- Understand and identify the components, and their interaction, in
a typical modern day processor.
- Understand and write assembly language programs.
- Understand how compiler generates machine code for simple C
programs.
- Improve performance of C programs through basic code optimization
techniques.
Learning Model: How do you prepare for
this course, and what is expected of you.
You are expected, and required, to read the materials BEFORE coming to
the lecture. The lecture materials will be available online, usually
after
the lecture --
these consist of powerpoint slides and, for some of the topics, videos
which will be posted on Blackboard. The best way to prepare for class
is to read the textbook, and notes (posted on blackboard or links to
materials at
other websites) before
coming to the lecture -- normally, lecture slides will be made
available after the class . At least one of the two lectures or lab
each week will
consist of in-class activities/exercises -- these are meant to enhance
your understanding of the theoretical concepts as well to help you
assess what you have learnt.
You will work in teams during in-class exercises as well as
some of the lab assignments and projects. Participating in team
activities is essential
for learning in this course.
Prerequisites and Texts:
- Programming and Data structures
(CS 1112 or CS 1132), Discrete Math ( CS1311), and concurrent
registration in CS2113 or a prior knowledge of C.
- Additional Highly recommended: Practical C Programming, by Steve
Oualline, O'Reilly publications. This book will also be listed for CS
2113, CS 2461, and CS 3410 (Systems Programming).
- Recommended reference: Computer Systems: A Programmers
Perspective, Randall E.
Bryant and
David O’Hallaron, Prentice-Hall
The material in the
text (and the text website) will be sometimes
supplemented
by notes posted on the course website (lecture notes link)
Software:
- CEDAR Logic
Simulator: Hardware logic/circuit simulator - this is the
circuit simulation tool I will be using in the class examples and
exercises. It only runs on MS Windows.
- LC3
Assembler and Simulator: Assembler and Simulator for LC3
processor. Available from the textbook website.
Piazza
We will be using Piazza for discussions - you are
encouraged to post your questions, and discussions, but please do not
post answers to homeworks/projects etc. The Teaching staff will be
regularly monitoring Piazza and we expect that you will get the fastest
response to your questions if you post on Piazza.
Lab Section and Teaching Assistants
You must be registered in a lab section.
These
will be conducted by the TAs: Antonio Woods, Guanlin Jing, the undergraduate TA Sarah Morin . The
lead TA is Antonio Woods. In addition, there are two undergraduate
learning assistants who will be holding review sessions
and weekly study halls -- Kevin Deems and Henry Jaensch-- and a grader Wei Guo.
TA Contact Info:
Antonio Woods antonio_woods@gwu.edu
Wei Guo - weiguo@gwu.edu
Guanlin Jin guanl001@gwu.edu
Sarah Morin sarahmorin@gwu.edu
Kevin Deems software8@gwu.edu
Henry Jaensch
ACM CS study hall (with
LAs and UTAs):Time and Place TBD
- The goal of the labs are: (1) serve as
a recitation section to review concepts covered in the lecture, (2)
apply the concepts you learnt by working through simple implementations
of the concepts and to get familiar with various skills such as Unix,
C, use of a compiler, assembly programming, debugging, and performance
tuning, (3) expose you to working with simple hardware circuits and (4) work on in-lab assignments and team
assignments/projects.
- The
Labs will be held in SEH 4040.
However, you will be able to install the software on any machine that has
Windows with LC3 tools (and a logic simulator) installed, and/or
Linux
and the gcc compiler installed, and connected to the web. The hardware
you need for the digital logic labs will be provided to you.
Course Materials
Grading
and Course Requirements
Syllabus
Lecture
Notes
Homeworks - blackboard
Team
Assignments
You are not allowed to collaborate on the
homeworks and the lab
assignments. Collaboration includes searching the web for answers or
for code. On programming projects and hardware projects, you can
collaborate ONLY if the
project is assigned to a two or three person team. For
programming projects, you cannot refer or use any code available on the
website that provides a solution (or a path to a solution) to the
assigned work. I will be using a tool that checks for code similarities
and any pair of programs with greater than 25% similarity will be
closely examined. Please refer to the
academic integrity policy linked from the course web page – this
policy
will be strictly enforced.
Academic
Integrity Policy