Home Page for CIS 211
Staff
- Instructor: Amr Sabry
- GTF: John Fiskio-Lasseter
- GTF: Chris Heino
Grades are online. I apologize for being late, but John and Chris had
exams and projects of their own. The distribution is:
A+ *********
A ************
A- ******
B+ ******
B ********
B- ****
C+ *********
C ****
C- ******
D+ *
D
D- ****
F ************
Y *
I have your last homework and final exam. Stop by if you want them.
General Information
Study Guide
Homeworks and Grades
What is CIS 211 about?
The goals of this course are:
to teach programming as the fundamental skill that you should
master and use in your day-to-day communication, and
to familiarize you with the field of computer science, its main
subject areas, and its recurring concepts.
To achieve both goals, the course will be organized around writing a
program to model a simple hardware machine. This task will require us
to, not only understand the basics of computer organization, the
fetch-execute cycle, and the machine language program structure, but
also learn how to use programming constructs such as classes, objects,
interfaces, arrays, exceptions, streams, threads, reflection, etc, to
express our understanding concretely and precisely in the form of
executable programs.
Getting Help
Send email, at any time, to all of us simultaneously. I am pretty good
at answering it. Alternatively, you can use the online help desk. We also hold the
following office hours:
- Amr Sabry (in DES 313): M 2:00-3:00, H 2:00-3:00, F 9:00-10:00
- John Fiskio-Lasseter (in DES 234): W 8:00-10:00, H 8:00-10:00
- Chris Heino (in B13 and B26) H 2:00-4:00, F 2:00-6:00
Lectures
The lectures will cover:
- general programming concepts like abstraction, interfaces, recursion,
exception handling, streams, threads, and reflection,
- object-oriented programming concepts like classes, objects,
and inheritance, and
- Java-specific concepts like events and the AWT (no applets).
The code that I use in the lecture is available.
Labs
The lab component will apply the concepts you learn in lecture to one
project. We will write a Java program to simulate a simple hardware
machine. Each lab will address one part of the machine and will be
self-contained. In other words, each lab can be done without reference
to previous or later labs so there should be no problems if you miss
or don't understand a lab. At the end of the term, all the labs can be
combined to get a complete simulation of the machine.
All homeworks will be collected and returned during the lab (except
the first because of the MLK holiday). Other than the brief period
during which this happens, you don't have to attend the labs. However
I encourage you to attend the lab to get insights and help about your
homework. The notes are still terse, and you will probably need extra
help!
My complete implementation is around 3700 lines of code. You will
obviously not write this much code, so for each assignment, I will
provide you with some help files.
Also the documentation
of my implementation is available online. You can even download
the bytecodes of my implementation to get a feeling for the final
product.
Syllabus
Here is a preliminary schedule of lectures and labs:
Date | Topic | Lab due
|
| |
|
1/5 | Introduction |
|
1/7 | No lecture |
|
1/9 | Data as objects |
|
1/12 | More data as objects; Exceptions |
|
1/14 | More data as objects; Exceptions |
|
1/16 | More data as objects; Exceptions |
Memory Unit (Chapter 3)
|
1/19 | MLK holiday |
|
1/21 | Lecture by John F-L about ALU lab |
|
1/23 | Benefits of OO (I) |
|
1/26 | Inheritance |
ALU (Chapter 4)
|
1/28 | Inheritance |
|
1/30 | Inheritance |
|
2/2 | Visitor Pattern |
CPU and IO (Chapters 6 and 7)
|
2/4 | Visitor Pattern |
|
2/6 | Visitor Pattern |
|
2/9 | Abstract Classes; Interfaces |
Instructions (Chapter 5)
|
2/11 | Midterm |
|
2/13 | Recursion |
|
2/16 | Recursion |
Machine (Chapter 8)
|
2/18 | Recursion |
|
2/20 | Recursion |
|
2/23 | More Visitors |
Execution; Tracing; Debugging
|
2/25 | More Visitors |
|
2/27 | Graphical User Interfaces |
|
3/2 | AWT |
Textual shell
|
3/4 | AWT |
|
3/6 | Threads |
|
3/9 | TBA |
Graphical shell
|
3/11 | TBA |
|
3/13 | Conclusion |
|
3/17 | Final exam at 3:15
|
Grades
Your grade will be computed as follows:
- Homeworks and quizzes: 30 % (I will drop the lowest grade in this
category.)
- Midterm exam: 30 % (Feb. 11, 1998)
- Final exam: 40 % (Tuesday March 17 at 3:15)
- Extra credit problems: Up to 5 %
References
Books
Books are great but you will never learn programming by
reading about it. So apply what you read.
- Required. Java Software Solutions, Lewis and
Loftus, Addison-Wesley. This is the text you've used in CIS 210. We
will cover Chapters 8, 9, 10, 12, 14, and 16. Here are the source files again
if you need them.
- Required. Intermediate Java Programming: A Laboratory
Course, Amr Sabry, UO Packet. These are the lab notes that describe
the assignments.
- Optional. A Little java with Patterns, Matthias Felleisen
and Dan Friedman, MIT Press, 1998. This book will really
teach you about recursion and the interpreter and visitor patterns. It
is a somewhat radical approach to teaching programming, but you will
learn a lot from it ... if you have the patience.
- Optional. An Invitation to Computer Science, G. Michael
Schneider and Judith L. Gersting, West Publising Company, 1995. This
book has the design of the hardware machine. You don't really need it
for CIS 211 but you will be using it in CIS 212, so you might as well
get it if you are want to know to more about the design of the
hardware machine.
Java
You will need to install the JDK version 1.1 or higher and
some documentation on your home machine. If you have a Mac, you will
not be able to test parts of the homework on your home machine. Sorry!
Visited
times since December 15, 1997 (or the last crash).
sabry@cs.uoregon.edu