Syllabus for EE 2651: Introduction to Computer Engineering, Spring, 1999
Professor:
Shelly Goggin, Ph.D. Office: NC 2524A Phone: 556-2582E-mail: een26511 or sgoggin@carbon.CUDenver.EDU or een26511@evans.cudenver.edu
Office Hours: M W 2:00 - 3:30, 5:30 - 6:30 and Tuesday 2 - 4 and by appointment.
______________________________________________________________________________
Topic Required Reading Homework due
1. January 20: Overview of course Quiz 0
2. January 25: Review Digital Logic Chapter 1 HW 1
3. January 27: Digital Components Chapter 2 Quiz 1
4. February 1: Data Representations Chapter 3 HW 2 Quiz 1
5. February 3: Introduction to UNIX/C C Manual* Quiz 2
6. February 8: Pointers C Manual* HW 3
7. February 10: Review for Midterm I Chapters 1 - 3, C Manual*
8. February 15: RTL Chapter 4
9. February 17: Midterm I: Building Blocks
10. February 22: Mano's Architecture 5-1 through 5-4
11. February 24: Fetch and Execute 5-5 through 5-10 Quiz 3
12. March 1: Mano’s Assembly 6-1 through 6-2 HW 4
13. March 3: Assemblers 6-3 through 6-6 Quiz 4
14. March 8: Subroutines 6-7, C Manual* HW 5
15. March 10: Input and Output 6-8 Quiz 5
16. March 22: Stacks 8-1 through 8-3 HW 6
17. March 24: Instruction Formats 8-4 through 8-8 Quiz 6
18. March 29: RISC 9-1 through 9-5 HW 7
19. March 31: Review for Midterm II Chapters 4 – 6 and 8, C Manual
20. April 5: Booth’s Algorithm 10-1 through 10-4
21. April 6: Midterm II: Basic Computer Architecture
22. April 11: Floating Point Arith. 10-5 through 10-7
23. April 13: Floating Point Mult. Quiz 7
24. April 19: Cache 12-1 through 12-5 HW 8
25. April 21: Virtual Memory 12-6 through 12-7 Quiz 8
26. April 26: Priority Interrrupts 11-5 through 11-7 HW 9
27. April 28: Real Assembly Languages Quiz 9
28. May 3: Review: Chapters 1-6, 8-13 and C Manual*
29. May 5: Review
30. May 10: Final: Comprehensive 4:00- 5:20 p.m.
31: May 12: Pick up grades
Grading: Weekly grade: Average of all homeworks and quizzes, weighted equally.
Exam grade: Average of Midterm I and Midterm II
Course grade: 50% Weekly, 30% Exams, 20% Final
A = 90% - 100%, B+ = 87% - 89%, B = 80% - 86%,
C+ = 77% - 79%, C = 70% - 76%, D = 60% - 69%, F =< 59%
I round up to the nearest point or percentage on everything.
For a 5 point problem or quiz, the grading is as follows:
1 pt - Something on the paper, or the answer without any discussion.
2 pts - Close, but not correct.
3 pts - Some parts were correct, but not all of the discussion.
4 pts - Good discussion with a minor error.
5 pts - Correct with a good discussion (at least 2 sentences).
I do not "curve" the grades. The grade that you receive is the grade that I will use in the above formula. I expect all your work to be neat and legible.
Texts: M. Morris Mano, Computer System Architecture, 3rd Edition, Prentice-Hall, 1993.
C Manual: Choose one that you feel comfortable with. Here are some suggestions:
1) Byron S. Gottfried, Theory and Problems of Programming with C, Schaum's Outline Series, McGraw-Hill, 1990. This book has lots of examples and is cheap!
2) Steve Oualline, Practical C Programming, O'Reilly & Associates, 1993. This book is part of the popular GNU series on UNIX programming. A great reference for programming on UNIX machines.
3) Gary Bronson and Stephan Menconi, A First Book of ANSI C: Fundamentals of C Programming, West Publishing, 1993. The presentations are very clear. This book would be good for those who haven't programmed in awhile.
4) J. Terry Godfrey, Applied C: The IBM Microcomputers, Prentice Hall, 1990. This is a good book for people who spend a lot of time with their PC's.
5) Brian W. Kernighan and Dennis M. Ritchie, The C Programming Language, Prentice Hall, 1988. This book is the "bible" for K&R C. It is a good resource for professionals, but does not present enough examples to be very useful for beginners.
Other sources: Many computer architecture books are available in the library. With the exception of RISC, the topics covered in this class are the same as was presented in higher-level courses even ten years ago. A couple of books used for this class in the past are:
Andrew S. Tannenbaum, Structured Computer Organization, Prentice-Hall, 1990. This book goes into more depth on the same material as we are going to cover.
Greg W. Scragg, Computer Organization: A Top-Down Approach, McGraw-Hill, 1992. This book is very easy to read, but doesn't provide enough detail.
Homework: The intent of the weekly homeworks is to encourage "learning by doing." Homeworks will consist of two questions, which will usually include writing a small program in C to explore the computers.
Many of the homeworks will be submitted by e-mailing them to me. Homework will be counted accepted if it is e-mailed before midnight of the due date. Any hard copies are to be handed in at the beginning of class. Late homework will be marked down 10% for every week that they are late, beginning at the end of class on the due date (or midnight on the due date for programs).
You will have an account on the SparcStation (evans) for e-mail, UNIX operations and writing C code. You can use a C compiler on your home computer for the programming assignments, but you do NOT need to purchase a C compiler for this course. If you do decide to purchase a C compiler, however, I recommend a C++ compiler that includes C. I expect the code you write to run on evans, even if you say that it runs on your PC at home. The C compiler on evans tends to be pickier than most PC compilers. You ARE NOT expected to know C language now; however, you ARE expected to know how to program in a high-level language.
I encourage you to take advantage of your ability to use electronic mail and remote log-ons. You can use e-mail to send me questions and comments any time of the day or night. (Please allow for up to 24 hours for my response.) You can work on evans from NC2206, the PC labs or from home using a modem. The phone number is (303) 629-0134. You can also use this connection to upload files using a program such as kermit or ftp from your PC to evans, in order to e-mail the homework files.
Homework solutions will be available. You are encouraged to check your own answers before you turn in your homework. Therefore, you will be graded based on your descriptions of your answers, not the answer itself. Your descriptions must be in your own English sentences with correct spelling. Since you have the answers, I expect you to ask questions about any difficulties you have with the homework before you turn the homework in, and not wait until after it is graded. I consider it a waste of everyone’s time for you to turn in homework that you have not thought about. I think that you will find that you learn very quickly using this approach to the homework.
I encourage you to work together in small groups (fewer than 4 people, please) to figure out what to do, but do not copy each other's results! Exact copies are plagiarism, which is an extremely serious offense! Plagiarism can earn you an F in this course and possibly suspension. "Close" copies will be subject to loss of points.
I am assuming that you have allotted five hours a week to this course, in addition to class time. That time should roughly break down to two hours a week reading and reviewing, and three hours a week working on the homework problems. By working consistently each week during the semester you will learn far more than you would by "cramming" before the exams. Let me know if the homework assignments are requiring too much time. If you are spending too much time, other people are probably spending too much time, also. There will not be any extra credit work, but occasionally I will give extra points for a particularly insightful comment or clever solution.
Quizzes: Every Wednesday (except during review and exam weeks), we will have a quiz over the material covered that week. The quiz question will be one of the reading questions for the week. You are expected to have read the assigned material before class and prepared questions for the lectures. The lecture periods will be used to answer your questions about the material covered in the readings, expand upon the material, and work problems to help you evaluate your understanding. To make up a quiz you must notify me in advance that you will be missing class. The make-up quiz will be more difficult than the in-class quiz.
Exams: Two, one-class-period midterms will test for a basic understanding of the concepts and for skill in using the computers. These should not be difficult, if you keep up with the homework and reading. Make-up exams must be arranged for in advance. The make-up exam will be more difficult than the in-class exam. The final will be comprehensive. The exams and quizzes will all be closed-book.
Lectures and Class Discussions: I consider lectures to be a catalyst for producing questions and illuminating difficult points, not a substitute for reading. I consider it vitally important for an engineer to be able to obtain information from the literature. I feel like I would be doing you a disservice if I gave you the impression that professors and instructors are always the best source of information in the professional world. I also believe that most (not all) engineers learn best by doing, not by listening or seeing. Therefore, the emphasis in lecture will be on doing problems and working in small groups.
Class discussions are an important part of the learning experience of this course. Therefore, I expect you to come to class ON TIME, prepared to discuss the material EVERY CLASS. I should not need to remind you that arriving late is rude to the class and detracts from the learning experience of your colleagues, who are spending their hard-earned time and money on this class. You will need to read the relevant sections before class and prepare questions for class. Keeping up with the homework is also important for being able to contribute to the class and to learn from the other members of the class. In addition, your knowledge can help other students learn the material. Please let me know if you have any special needs in the classroom environment.
Prerequisites: This course is a bridge between basic computing (CSC 1410: Fundamentals of Computing) and logic design (EE 1510), to digital hardware design (EE 3651) and computer lab (EE 4411). This course will expand upon and refine the model of the computer that you developed in basic computing. You are expected to have good programming skills and an understanding of binary logic. The next class, digital hardware design, will then develop skills for designing microprocessor-based systems and computer interfaces. A good working knowledge of English is also required.
Course Objectives: The objectives of this course are to provide you with a broad overview of the computer engineering, and to provide you with enough computer skills and understanding to allow you to quickly learn a new computer system. The main topics will be computer hardware, CPU control and software. We will use the C programming language as both a high-level programming language that depends heavily on the compiler, and as a low-level programming language for interacting directly with registers and memory.
To pass this course, you must demonstrate that you understand the basic components of computer systems. You should understand the hardware, instruction cycles and assembly language. You must obtain some proficiency in C to explore the levels of the computers, but the intent of this course is not to concentrate on the subtleties of C. If you plan on making C a major part of your professional life, you may want to take a C++ course as a professional elective and incorporate C into your senior design project. When you read the Sunday newspaper, notice that the job advertisements frequently request that electrical engineers have experience with C and C++.
In addition to the technical objectives, my objective is for this course to help you enjoy working with computers.
Feedback to the Prof: The more feedback you can give me on the effectiveness of the classes and assignments, the better I can make the course for all of us. Finally, the most important thing to remember is
DON'T PANIC :)