Change 2 (September 18): We are right now running around one week late according to the schedule below. Therefore, the homework which is listed as being due on September 22 has not been assigned yet. There is no homework due the week of 9/20. I will assign the homework this Tuesday. it will be due a week from next Tuesday. Soon all of these changes will be reflected in the syllabus below.
In addition to that, by this Tuesday (9/21) I will post instructions on how to email your work to me, in case you don't have much experience with email, attachments, etc. make sure you know how to perform this task well before the deadline for the homework. "I don't know how to send you the homework" will not be an excuse for not handing it on time.
Change 1 (September 13): The original version of this document mentioned that all homeworks would be due on Wednesdays. That has been changed to TUESDAYS. That is, all homeworks will be due on Tuesdays, unless otherwise stated. That way I will have time to prepare your files for discussion by Thursday morning.
Note (September 13): The bookstore is processing a new order for textbooks. Instead of getting The Complete C++ Training Course (a package that includes a book and a CD) we will be getting only the book, C++; How to Program. That should bring the price down to around $62. The bookstore should have the books available Wednesday or Thursday of this week.
Although we will be covering topics having to do with computer hardware, we will spend most of the semester talking and working with software.
There will be a total of five assignments this semester. You will always have at least one whole week between the date when the assignment is given and the day it is due. Because of the number of students in the class, as well as to build a sense of professionalism, I will not accept late homeworks.
Homeworks will always be due on a Tuesday, unless otherwise stated. Handing your homework will consist of EMAILING me a copy of all the files that form part of your homework. You should send these files to the email address listed above.
In the schedule below you will notice when it is in the semester we will be having assignments. As soon as the material for an assignment is covered in class, you will be able to follow links below to pages describing the homeworks.
The first time we meet in class after a homework is due, we will discuss your homeworks as a group. I will take your name and other identifying information out of the files, and then project them into a screen so that we can all look at them together. The purpose is that we can all learn from each other, observing the good and bad that we have all generated. I expect everyone to participate in these discussions; the amount of knowledge we can get from each other is enormous.
At the end of the semester I will let you know of which homeworks from throughout the semester you will be handing in again. When you hand these homeworks again, I expect you to incorporate everything you might have learnt during class discussions. In addition, I will assign one or two new projects to be handed in with the rest of your "old `" homeworks.
Division I note:
If you would like to have this course count as one of your Div. 1 courses, you will need to do some work in addition to what is outlined above.
As the semester goes along, you will see that I keep talking about how a lot of software currently being created and used is full of bugs. My personal position is that the type of errors we all find in the programs we purchase and use would not be accepted in any other field. For example, no one would accept an automobile that crashes every other day, or buildings that collapse under their own weight.
The fact is, there are mathematical techniques we can use in order to certify that our programs are correct. We can apply these techniques to our programs to determine if they are free of bugs once the programs have been written. In fact, we can write algorithms as mathematical formulations, and then turn these mathematical algorithms into error-free code.
I will be talking about these techniques in class, and show you how to use them for code design. If you would like this course to count as a Div. 1 course, the homeworks you hand in will need to be proven correct by using these techniques. If you want to pursue this option, I suggest that you meet with me several times during the semester, so that we can talk about how you are doing with regards to this requirement.
The following schedule should help you in preparing for the different topics we will be talking about during this semester. We will all enjoy and get more out of the course if you do the suggested readings before coming to class.
I encourage you to take advantage of the syllabus shown below in order
to remain on schedule.
| Week | Dates | Topics | Assignments | Reading |
| 1 | Sept. 9 | Course outline.
What the course is and is not about. What you should expect of the course. Office hours, etc. Introduction to the course. Computer Organization. |
Chapter 1, 2.1-2.7. | |
| 2 | Sept. 14, 16 | Simple programs: printing, arithmetic operations.
|
September 14: Assigned: First homework, dealing with arithmetic expressions
and conditional statements (due September 21).
this homework will now be assigned on September 21 and will be due on September 28. |
Chapter 2. |
| 3 | Sept. 21, 23 | Relational operators. Control structures. | First homework assigned. This is the homework originally due September 22. Due day changed to September 28. | Chapter 2. |
| 4 | Sept. 28, 30 | Control Structures | Assigned: Second homework, dealing with while loops (due October 5). | Chapter 2 |
| 5 | Oct 5, 7 | Control Structures, Functions.
|
Second homework due October 5. | Chapter 3. |
| 6 | Oct. 14 | Functions | Assigned: Third homework, dealing with functions (due October 19). | Chapter 3. |
| 7 | Oct. 19, 21 | Arrays. | Third homework due October 19. | Chapter 4. |
| 8 | Oct. 26, 28 | Arrays | Assigned: Fourth homework, dealing with arrays (due November 2). | Chapter 4. |
| 9 | Nov. 2, 4 | Pointers. | Fourth homework due November 2. | Chapter 5. |
| 10 | Nov. 9, 11 | Pointers. | Chapter 5. | |
| 11 | Nov. 16, 18 | Strings | Chapter 5. | |
| 12 | Nov. 23 | File Input/Output | Chapter 14. | |
| 13 | Nov. 30, Dec. 2 | File I/O, Introduction to Data Structures | Assigned: Fifth homework, dealing with files (due December 7). | Chapters 14 & 15. |
| 14 | Dec. 9 | Introduction to Data Structures. | Fifth assignment due on December 7.
Last project(s) assigned (due December 14) |
Chapter 15. |