UMBC CMSC 313, Computer Organization & Assembly Language,
Fall 2004, Section 0101
- Principles of Computer Architecture, Murdocca and Heuring,
- Linux Assembly Language Programming, Neveln, Prentice-Hall, 2000.
You should have mastered the material covered in the
following courses: CMSC 202 Computer Science II and CMSC 203 Discrete
Structures. In particular, we will assume that you have had extensive
programming experience in C/C++. Also, you must be familiar with and be
able to work with truth tables, Boolean algebra and modular arithmetic.
The purpose of this course is to introduce computer
science majors to computing systems below that of a high-level programming
language. The material covered can be broadly separated into the
categories of assembly language programming and computer organization.
Under the heading of assembly language programming students will be
introduced to the i386 instruction set, low-level programming, the Linux
memory model, as well as the internal workings of compilers, assemblers
and linkers. Topics under computer organization include digital logic
design (combinational circuits, sequential circuits, finite state
machines) and basic computer architecture (system bus, memory hierarchy
and input/output devices). A secondary goal of this course is to prepare
computer science majors for CMSC 411 Computer Architecture.
Your final grade will be based upon 5 homework assignments
(20% total), 3 short programming assignments (12% total), 1 long
programming assignment (8%), 3 circuit simulation exercises (12% total), a
midterm exam (24%) and a final exam (24%). Your grade is given for work
done during the semester; incomplete grades will only be given for
medical illness or other such dire circumstances.
You are expected to attend all lectures. You are responsible for all
material covered in the lecture as well as those in the assigned reading.
However, this subject cannot be learned simply by listening to the lectures
and reading the book. In order to master the material, you need to spend
time outside the classroom on the programming assignments, simulation
exercises and homework assignments.
There will be homework or exercises due on most weeks. Homeworks are due at
the beginning of lecture. Exercises and projects turned in via online
submission are due 1 minute past 11:59pm of the due date. With one
exception, late homework, exercises and programming assignments will not be
accepted --- this is to allow for timely grading and discussion of the
solutions. The exception is that each student may submit one assignment (of
any kind) up to one week late during the semester.
You are allowed to discuss the homework
assignments with other students. However, circuit simulation exercises and
programming projects must be completed by individual effort. Furthermore,
you must write up your homework independently. This means
you should only have the textbooks and your own notes in front of you when
you write up your homework --- not your friend's notes, your friend's
homework or other reference material. You should not have a copy of
someone else's homework or project under any circumstance.
For example, you should not let someone turn in your homework. Cases
of academic dishonesty will be dealt with severely..
The exams will be closed-book and closed-notes. The date for
the midterm exam is Tuesday, October 26. The final exam will cover the
material from the second part of the course. The date and time of the
final exam is Tuesday, December 21, 10:30am to 12:30pm. You will not be
able to take the final exam at an earlier time.
This course is a replacement for CMSC 211 Assembly Language Programming and
CMSC 311 Computer Organization. Students who have taken either CMSC 211 or
CMSC 311 previously should not take this class. Furthermore, computer
science majors who take this class must also take CMSC 411 Computer
Architecture to satisfy the requirements of a BS degree in computer
science. CMSC 313 by itself will not be sufficient for graduation.
20 Aug 2004 14:56:44 EDT
to Fall 2004 CMSC 313 Section Homepage