COMPUTER ORGANIZATION
Spring 2004
TR 2:30 – 4:20pm
Kauffman 110
Instructor: |
Dr. Steve Goddard |
Office Hours: |
12:30-2:30pm TR |
|
Kauffman 133 |
|
Or by appt. |
|
472-9453 (TR) 472-9968 (MWF) |
|
|
|
goddard@cse.unl.edu |
|
|
|
http://cse.unl.edu/~goddard |
|
|
|
|
|
|
TA: |
Byron Blunk |
Office Hours: |
4:30-6:00pm TR |
|
Kauffman 133 |
|
Or by appt. |
|
472-9453 |
|
|
|
bblunk@unlnotes.unl.edu |
|
|
The computer science goals of
this course are to introduce the fundamental organization and structure of
computer systems. Topics include
Boolean logic, data representation, processor organization, input/output,
memory organization, system support software and communication.
A broader set of objectives for this course is to teach critical thinking, how to learn, and how to communicate technical concepts. These objectives will be met through lectures, challenging team assignments, regular quizzes, and a final examination.
The following topics will be covered:
· Computer systems
· Data representation
· Machine language
· Processor architecture
· Memory hierarchy
· Linking
· Exception control flow
· Virtual memory
· System level I/O
· Network programming
· Concurrent programming
The textbook for this course is Computer Systems: A Programmer’s Perspective, Randal Bryant and David O’Hallaron, Prentice Hall, 2002
You will be doing substantial programming in the C language and working with the Linux/Unix operating system. The book The C Programming Language, 2nd Ed. (ANSI C version) or later, Kernighan & Ritchie, Prentice Hall, will be helpful in learning the operating system and programming environment.
In addition to the texts, I will make available a set of lecture notes for each class. These notes are purposely incomplete and are meant to simply be a note-taking aid. The lecture notes, as well as copies of most class handouts, can be found on the CSCE 230J home page on the Web at URL:
http://www.cse.unl.edu/~goddard/Courses/CSCE230J/
Prerequisite for this course is CSCE 156. Prerequisites by specific topics are:
As part of our ongoing accreditation process, there will be an evaluation of your understanding of the material covered in the prerequisite courses. This evaluation will be graded as a homework assignment.
Your grade in this class will based on:[1]
·
Assignments 30%,
·
Peer and instructor
evaluation 5%
·
Programming project 15%,
·
Bi-weekly (15-20 minute)
Quizzes 25%, and
· Final examination 25%.
A minimum grade of C is required for the course to count toward a CS/CE major or minor. Note: a grade of C- does NOT count toward a CS/CE major or minor. No incompletes (I) will be given. Letter grades will be assigned at the end of the semester, using the percentage of possible points, as follows:
A+: 101+ |
A: 93-100 |
A-: 90-92 |
|
B+: 87-89 |
B: 83-86 |
B-: 80-82 |
|
C+: 77-79 |
C: 73-76 |
C-: 70-72 |
|
D+: 67-69 |
D: 63-66 |
D-: 60-62 |
F: 0-59 |
Assignments: Homework will be assigned approximately on a bi-weekly basis. Assignments will be a mix of individual and team assignments and will include programming exercises and analytical (pen and paper) problems. Teams will be randomly selected for team assignments. In some cases, you will be able to organize your own teams. All assignments will be due at 9pm on the day on which they are due. Assignments will be submitted via the Web-handin program.
All homework submitted after its deadline is considered late. Assignments that are submitted within 24 hours after the original deadline are considered to be “one day late,” within 48 hours, “two days late,” etc. A late homework assignment will be accepted without penalty if the following conditions are met:
• the total “lateness” of all homework assignments received to date (including the current assignment) does not exceed 4 days.
• the student does not miss class on the day the assignment is due or on the day after the assignment is due. Exceptions to this requirement must be approved by the instructor in advance.
Late assignments should be handed in with the Web-handin
program. The penalty for late
assignments is 25% per day they are late.
An assignment that is 4 days late will receive no credit. Weekends
count in evaluating the lateness of an assignment.
Program correctness
is assumed and only accounts for a portion of the programming grade. Some
programming assignments will also require a document that describes the design;
design tradeoffs considered; testing performed; and a detailed description of
outstanding program defects. All
programs will follow the JDEHP coding standard. The coding standard specifically addresses programs written in
Java, C++ and C, but it can easily be extended to cover other programming
languages.
Peer and Instructor
Evaluation: Each student will be
required to fill out and submit an evaluation form that describes the
performance of the team members and the team as a unit for each assignment,
including the course project. These
evaluations will be combined with the instructor’s personal evaluation of each
student’s performance in the team and in the classroom.
Course Project: The course project will integrate most concepts covered during the semester, but it is more open-ended than regular assignments. A written proposal and a final report will be required. The final report and program source code will be due 9:00pm Friday, April 30, 2004. There will be NO late days allowed for the course project. A penalty of 25% per day will be assessed for late projects. Early submissions are encouraged. Consider this your notice of an assignment due during Dead Week. More details regarding the project will be distributed after Spring Break.
Quizzes: There will be NO midterm examination. Quizzes, given approximately every two weeks, will take the place of a midterm exam.
Final Examination: The final exam for this course is scheduled for Friday, May 7 at 3:30 pm. The final exam covers the entire course.
The tentative schedule of topics, readings, and assignments follows. The dates and number of assignments is likely to change.
Week |
Topic |
Readings |
Support Lectures |
Milestones |
1 |
Computer systems |
Ch 1 |
|
Pre-test: HW0, Q1 |
1-3 |
Data representation & Arithmetic |
Ch 2 |
|
Q2, HW1 |
3-6 |
Machine language |
Ch 3 |
|
Q3 |
6-9 |
Processor architecture |
Ch 4 |
|
Q4, HW2 |
10 |
Spring Break |
N/A |
|
N/A |
11 |
Memory hierarchy |
Ch 6.1-6.3 |
|
Q5, HW3 |
12 |
Linking |
Ch 7 |
|
Q6, HW4 |
12-13 |
Exception control flow |
Ch 8 (8.1-3) |
|
Q7 |
14 |
Virtual memory |
Ch 10 |
|
HW5 |
14-15 |
System level I/O |
Ch 11 |
|
Q8 |
15-16 |
Network and concurrent programming |
Ch 12,13 (lightly) |
|
|
16 |
Review for Final Exam |
|
|
Projects Due |
Both individual and team assignments will be given. The following text on collaboration is written in terms of teams. Individual assignments constitute teams of size one. Acceptable collaboration with students not on your team (or for an individual assignment) includes:
• discussing the assigned problems to understand their meaning,
• discussing possible approaches to assigned problems,
• discussing general programming principles in the solution of programming problems or UNIX system features that will help solve the problem.
In all cases you must explicitly acknowledge any and all substantive help received from other teams during the course of the preparation of your solution. That is, if you collaborate with other teams then you must include an explicit acknowledgment in your solution of the persons from whom you received aid. As stated above, individual assignments are defined as a team of one person.
Unacceptable collaboration, unless explicitly stated, on homework includes:
• copying (verbatim use) of physical papers or computer files.[2]
• submission of solutions that are jointly authored, or authored either wholly or in part by other individuals not on your team.
The general rule to be followed is that the strategy and approach of solutions may be developed jointly but all actual solutions (i.e., the final solution) must be constructed and written up by individual teams. Work done with other teams should not be done in sufficient detail as to make it a solution. For example, the design of a program solution may be performed jointly, however, each team must write all the code they eventually submit as their solution. No code may be shared between teams. Similarly, for written assignments, solutions may sketched out with other teams, however each team must construct the final form of their solution individually and write-up their own solution. You will be held accountable if someone else copies your work, even if you are unaware of the event. Thus, you should make sure all of your files are properly secured.
Unacceptable collaboration will be considered a violation of the Student Code of Conduct, and will result in a failing grade for the course. In other words: if you cheat, you will fail! In addition, the incident will be reported to the CSE Department and to the JDEHP Director, in accordance with the CSCE department policy on academic integrity. You are responsible to read the CSCE department policy and adhere to it.
Should questions arise during the course of working on a problem, please feel free to immediately contact the instructor either by telephone, electronic mail, or by an office visit. In principle, if you work with others in good faith and are honest and generous with your attributions of credit you will have no problems.
Any student in this course who has a disability that necessitates accommodation should contact the instructor as soon as possible to discuss the appropriate accommodations necessary to complete the course requirements.