EEN118 R (Programming 1) Autumn 2016
Tues, Thurs 2:00-3:15 in MM316

Class History

Class 1  Tue 23‑8‑2016   Quick introductions, etc.
Why computers use binary instead of decimal.
Programming: old, better, better, new, worse.
Sometimes the simplest things are the hardest to do.
Class 2  Thur 25‑8‑2016   Setting up a visual studio C++ project.
Three C++ introductory programs: one, two, three.
Class 3  Tue 30‑8‑2016   Expressions - Operators and Priorities
The classroom computer messed up my memory stick. If anyone has accurate notes of the first example (with controlled repetition) please send me a copy. I want to get as close to what we had in class as possible.
Class 4  Thur 1‑9‑2016   Repetition controlled again: Bart's punishment.
Functions that return values: square, difference.
Something useful, a quadratic equation solver.
Class 5  Tue 6‑9‑2016   Testing Expressions. Make your own tests, get very familiar with this.
Bart's punishment can easily be adapted to do something useful, tabulating a function.
With a bit of cleverness, we can even do it in the "right" order.
And a tabulator can be changed into a graph plotter.
Class 6  Thur 8‑9‑2016   What we've been doing recently is called Recursion. It is a very powerful technique.
Analysing more complex recursive functions.
An absurdly long program.
One step towards redesigning it properly.
After a few more steps The complete final version. Concentrate on guaranteeing correctness for an easy range of inputs, and gradually building on that. Extend the range of guaranteed correctness without leaving holes.
Class 7  Tue 13‑9‑2016   Gaining complete control over what a function returns: one, two, three, finally, an Accumulating Parameter.
Class 8  Thur 15‑9‑2016   A little taste of unix: pico, CC, a.out.
Simple encryption and decryption by substitution.
Printing an int an any base (up to 36).
Class 9  Tue 20‑9‑2016   Complete conversion between two bases.
A triangle drawn with fancy lines, we need to improve its structure.
Class 10  Thur 22‑9‑2016   A recursive fractal star, the infinite coastline.
A good way of plotting a graph
A three dimensional graph using colour as the third dimnension
Class 11  Tue 27‑9‑2016   Some Biology: How to make bees, and what a caprimulgus does at night.
Calculations about a shape, but don't panic! It's already coded. Recursive graphics.
Class 12  Thur 29‑9‑2016   Using Unix.
Class 13  Tue 4‑10‑2016   Searching for Animals at the Pet Shop.
With a real search function and prices.
Introducing the Binary Chop Search.
Class 14  Tue 11‑10‑2016   Special Review
Class 15  Thur 13‑10‑2016   More review
Class 16  Tue 18‑10‑2016   First Mid-Term Test. A Sample.
Class 17  Tue 25‑10‑2016   Standard C++ input and output.
A data file, and two programs that read it: one, two.
Class 18  Thur 27‑10‑2016   The beginning of a chemistry calculator.
Simplifications: for loops, update operators +=, -=, *=, etc.
Class 19  Tue 1‑11‑2016   Errors with doubles build up in chain calculations,
converting between binary and decimal for fractions; 1/10 repeats infinitely.
Introducing structs (to represent fractions accurately), Euclid's GCD algorithm (300 BC).
Class 20  Thur 3‑11‑2016   Using structs, our Chemistry Calculator gets a lot better.
Class 21  Tue 8‑11‑2016   Reference Parameters and Sorting. The first four steps: one, two, three, four.
Meta-programming: finally we wrote a program that wrote the program for us..
Class 22  Thur 10‑11‑2016   A flexible object oriented input system.
Special Saturday at 2:30
Sunday at 1:00
Discussion/Help session, Engineering Building.
Class 23  Tue 15‑11‑2016   The justification for structs; more general review.
Class 24  Thur 17‑11‑2016   Second Test. Here are some old sample questions.
Class 25  Tue 29‑11‑2016   Bringing things together, Arrays, files, structs, and methods, all in our one calculator example.
Class 26  Thur 1‑12‑2016   Now recursion joins in too, and we can handle complicated formulæ with parentheses.
Slight review of tests.
Reverse Polish Notation.
Special Monday at 6:15 Pre-final review, Engineering Building.
Class 27  Tue 6‑12‑2016   Today will be for questions and problems only. I'll consider it a reading day.
Special Tuesday at 5:00 Pre-final review, Engineering Building.


This Semesters' Lab Assignments

Lab 1,   Mon 29 Aug - Thur 1 Sept
(pdf) Using visual C++ to run programs; drawing stars and stick figures.
Lab 2, Tues 6 Sept - Mon 12 Sept
(pdf) Divide and conquer: building big programs from little functions.
Lab 3, Tues 13 Sept - Mon 19 Sept
(pdf) Controlling repetition in programs.
Lab 4, Tues 20 Sept - Mon 26 Sept
(pdf) A video game: exploding the enemy with a cannon.
Lab 5, Tues 27 Sept - Mon 3 Oct
(pdf) A real-time animated clock application.
Lab 6,  Tue 4 Oct - Mon 10 Oct
(pdf) Generating calendars and using Unix.
Lab 7, Tues 11 Oct - Mon 17 Oct
(pdf) A randomly generated Happy Street Scene.
Lab 8, Mon 24 Oct - Thur 27 Oct
(pdf) An interactive desk calculator.
Lab 9, Mon 31 Oct - Thur 3 Nov
(pdf) Meteorological data processing and visualisation. the data files
Lab 10,  Mon 7 Nov - Thur 10 Nov
(pdf) Database programming under Unix.
The special timing function.
Lab 11, Mon 14 Nov - Thur 17 Nov
(pdf) A robot seaching for treasure in a maze. sample maze.
Lab 12, Mon 28 Nov - Thur 1 Dec
(pdf) An automatic robot: he turned into a video game.
Mon 12 Dec - Thur 15 Dec
Nothing will be accepted for grading more than 1 week after your deadline for lab 12.