EEN118, Programming I, Autumn 2011
Tues, Thurs at 2:00 pm in MM201

Class History

Class 1  Thur 25‑8‑2011   Quick introductions, what to expect from the class and labs, the official syllabus, etc.
The inside of a computer, partly illustrated by Colossus: A, B, C, D.
Class 2  Tue 30‑8‑2011   Starting up visual studio, a first simple program. Every programmer relies on libraries because even something as simple as making words appear requires an enormous amount of effort.
Class 3  Thur 1‑9‑2011   Some dull definitions and C++ language rules,
int vs double, Giving names to constants, Creating a very simple function.
A bad example from the past, Fortran guidance program for Mariner probe.
Class 4  Tue 6‑9‑2011   Complex and intricate things can easily be achieved by building up small simple functions: All the squares.
Class 5  Thur 8‑9‑2011   Bart's punishment didn't quite go as planned. It needed a conditional, C++'s if.
Functions run in their own private universes of memory, that's how they can have "circular" definitions.
Simple controlled repetition; counting up or down; tabulating temperature conversions.
Class 6  Tue 13‑9‑2011   Overflow when ints get too big. Analysis of repetitive functions, and the Special Star
Class 7  Thur 15‑9‑2011   Thinking about the fractal star. Functions that return values. The bool operators && || !.
Nested repetition with the tidy multiplication table.
Class 8  Tue 20‑9‑2011   More divide and conquer: a general purpose graph plotting program.
Class 9  Thur 22‑9‑2011   Some serious dividing and conquering: speaking numbers.
Class 10  Tue 27‑9‑2011   The complete Number Speaking Function, a nice clean recursive solution.
A logarithmic algorithm: Finding Square Roots, to be competed.
Class 11  Thur 29‑9‑2011   The binary chop search square root function, how quickly it converges; cout and \n.
How to make bees, what a caprimulgus does at night, Brownian motion and the while loop.
Class 12  Tue 4‑10‑2011   Sometimes variables are useful: variables and loops.
Class 13  Thur 6‑10‑2011   Comparing three sorting algorithms, "Bubble sort", "Selection sort", and "Merge sort", and seeing that different solutions to the same problem can have vastly different speeds, N2 versus N×log2N.
Introducing Unix.
Class 14  Tue 11‑10‑2011   Why we should avoid complacency. We'll have to have a mid-term before much longer.
More unixing, and the Badly Written Program.
Class 15  Thur 13‑10‑2011   The most common types of bad programming practice.
Little things: for, +=, -=, *=, etc, ++, --, ,
Good programming practice: continuous refinement from a correct problem statement to a correct documented program.
Class 16  Tue 18‑10‑2011   A simulation of a physical situation: The boy and the bull.
Class 17  Thur 20‑10‑2011   The break statement, stopping a loop at any time. An overloaded function.
ofstream and ifstream: Creating and reading files on disc. the updated case study.
Class 18  Tue 25‑10‑2011   Test Day. (and a plain text version)
Class 19  Thur 27‑10‑2011   Some "objects" in C++: Dull facts about string, ifstream (like cin), ofstream (like cout).
Class 20  Tue 1‑11‑2011   Reference Parameters, and Creating our own objects.
Class 21  Thur 3‑11‑2011   Objects (structs) can be very useful, simplifying and clarifying programs.
Final version of the case study: we even added a dinosaur in 3 minutes.
Class 22  Tue 8‑11‑2011   Review of question 2.
Arrays, the spelling checker program.
Class 23  Thur 10‑11‑2011   The ASCII character code, string manipulations, making the spelling checker function properly. Things to remember about passing arrays to functions.
Class 24  Tue 15‑11‑2011   The lead-in: plotting a complicated 3-D graph.
Telling C++ how to use complex numbers, and investigating how they behave.
Class 25  Thur 17‑11‑2011   Reviewing ifstreams, ofstreams, structs, and arrays.
and a little more exploration of complex numbers.
Sun 20th Review Session (voluntary) at 5 pm in EB 216.
Mon 21st Review Session (voluntary) at 5 pm in EB 504.
Class 26  Tue 22‑11‑2011   Test and solutions.
Class 27  Tue 29‑11‑2011   Case Study in design and implementation from beginning to end: the molecular weight calculator, data file.
Class 28  Thur 1‑12‑2011   Talking about the final for a bit, and finishing the case study.
Review Sun 11‑12‑2011   in EB 216 from 1 to 3. Review session with the lab guys.
Final Tue 13‑12‑2011 at 2:00 p.m. in our usual classroom.


Lab Assignments

                    Lab Setup Guide
Library downloads and documentation
    
     Lab 1 30 Aug - 1 Sep      (pdf)      Using visual C++ to run programs; drawing stars and stick figures.
     Lab 2 6-8 Sep      (pdf)      Divide and conquer: building big programs from little functions.
     Lab 3 20-22 Sep      (pdf)      Randomly generated Happy Street Scene.
     Lab 4 27-29 Sep      (pdf)      Video game: exploding the enemy with a cannon; (assistance with the drawing).
     Lab 5 4-6 Oct      (pdf)      Real-time animated clock application.
     Lab 6 11-13 Oct      (pdf)      Generating calendars and using Unix.
     Lab 7 18-20 Oct      (pdf)      An interactive desk calculator.
     Lab 8 25-27 Oct      (pdf)      Meteorological data processing and visualisation. the data files
     Lab 9 1-3 Nov      (pdf)      Interactive map of the United States. Data files: state outlines, capitals.
     Lab 10 8-10 Nov      (pdf)      Database programming under Unix.
Data files: database1.txt, 2, 3, 5, 10, 20.
The special timing function.
     Lab 11 15-17 Nov      (pdf)      A robot seaching for treasure in a maze. sample maze
     Lab 12 29 Nov - 1 Dec      (pdf)      An automatic robot: he turned into a video game.