EEN118 R (Programming 1) Spring 2017
Tues, Thurs 2:00-3:15 in MM318

Class History

Class 1  Tue 17‑1‑2017    Hello to everyone.
Why computers use binary instead of decimal.
Sometimes the simplest things are the hardest to do.
Class 2  Thur 19‑1‑2017 The visual studio IDE, editor, compiler, linker, debugger. Every step in creating and reusing projects.
Typewriter-like output with print, and graphical output with make_window, move_to, draw_to, print_string, etc.
Defining our own very basic functions.
Class 3  Tue 24‑1‑2017 Expressions - Operators and Priorities
Calculations and arithmetic in C++ - order of evaluation, types of numbers, etc.
int, double, bool, and string.
Class 4  Thur 26‑1‑2017 Programming practice with functions:
Being late for class one, two.
Investigating arithmetic operations,
being prepared for test question 1,
Named constants for a decorative pentagon.
Class 5  Tue 31‑1‑2017 mastering controlled repetition I will not be late for class 100 times,
An anything-agon, A circle in a box to prove its radius,
Tabulating the square root function.
Class 6  Thur 2‑2‑2017 Repetition in many forms, and functions that return values:
Conversion table, and the right way round.
Plotting a graph.
Interactive quadratic equation solver.
Class 7  Tue 7‑2‑2017 What do these functions do?
An absurdly long program.
We took this (one step towards redesigning it properly) and made a function that can speak any int value in English.
Class 8  Thur 9‑2‑2017 More experiments with functions that return values:
A more flexible quadratic equation solver,
The sum of a series,
A spirograph pattern.
Class 9  Tue 14‑2‑2017 Circles on circles on circles: more spirograph fun,
and a spiralling square,
Find a character in a string,
Simplistic encryption,
Animals for a Binary Chop Search.
Class 10  Thur 16‑2‑2017 Introducing cout and the while loop.
Binary chop: what if the animal isn't found?
We make a table of squares so we can search for square roots,
But who needs the table?
How to make bees, and what a caprimulgus does at night, and more biology: Brownian motion,
Class 11  Tue 21‑2‑2017 We went through the first sample test.
The triangle with special line-drawing,
Recursion simplifies it and takes it to its fractal limit.
Class 12  Thur 23‑2‑2017 Using Unix.
Project 1: a multiplication table,
Project 2: approximating sines (with the mistake left in for you to find).
Class 13  Tue 28‑2‑2017 Variables, and some recent experiments re-done using them: one, two, three.
Special Wednesday 7pm Pre-test review, after the regular lab session.
Class 14  Thur 2‑3‑2017 First Test. A sample, and another one.
Class 15  Tue 7‑3‑2017 A data file, and a program that uses it.
using cin, ifstream, break, ASCII codes, arrays, and loops.
Class 16  Thur 9‑3‑2017 Discovering a big triangular sorting program, and making a more flexible version with loops.
Class 17  Tue 21‑3‑2017 What we learned from the test.
Class 18  Thur 23‑3‑2017 For loops and update operators. Introducing structs by implementing arithmetic on fractions, Euclid's gcd algorithm too.
Class 19  Tue 28‑3‑2017 Improvements to our chemistry database from class 15:
1. Good use of functions and structs,
2. A special object to simplify input.
Class 20  Thur 30‑3‑2017 The dangers of complacency.
Properly structuring our program, recognising different input parts.
Class 21  Tue 4‑4‑2017 Methods and basic object structure diagrams.
Recursion helps, our Molecular Weight Calculator is now complete.
Class 22  Thur 6‑4‑2017 Investigating the Fibonacci sequence: recursion, memoisation, a loop with memory. Convergence, the "golden ratio".
Class 23  Tue 11‑4‑2017 The boy and the bull, a dangerous simulation.
Class 24  Thur 13‑4‑2017 The boy and the bull completed, think about enhancements.
Thinking: reversing the order of a sentence, three meanings.
Exercise: how many numbers between 1 and N are divisible neither by 5 not by 7?
Special Friday 11 a.m. Pre-test review.
Class 25  Tue 18‑4‑2017 Case study: How many unique words are there in a text file?
Class 26  Thur 20‑4‑2017 Second test. A sample. Another sample.
Class 27  Tue 25‑4‑2017 Case study: Arithmetic on thousand digit numbers.
Class 28  Thur 27‑4‑2017 Review of various things.
Special Mon 8th 5pm Pre-final review at 5 pm.


This Semester's Lab Assignments

Lab 1,   Mon 23 Jan - Thur 26 Jan
(pdf) Using visual C++ to run programs; drawing stars and stick figures.
Lab 2, Mon 30 Jan - Thur 2 Feb
(pdf) Divide and conquer: building big programs from little functions.
Lab 3, Mon 6 Feb - Thur 9 Feb
(pdf) Controlling repetition in programs.
Lab 4, Mon 13 Feb - Thur 16 Feb
(pdf) A video game: Space Invaders with a cannon.
Lab 5, Mon 20 Feb - Thur 23 Feb
(pdf) A real-time animated clock application.
Lab 6,  Mon 27 Feb - Thur 2 Mar
(pdf) Generating calendars and using Unix.
Lab 7, Mon 6 Mar - Thur 9 Mar
(pdf) A randomly generated Happy Street Scene.
Lab 8, Mon 20 Mar - Thur 23 Mar
(pdf) An interactive desk calculator.
Lab 9, Mon 27 Mar - Thur 30 Mar
(pdf) Interactive map of the United States. Data files: state outlines, capitals.
Lab 10,  Mon 3 Apr - Thur 6 Apr
(pdf) Database programming under Unix.
The special timing function.
Lab 11, Mon 10 Apr - Thur 13 Apr
(pdf) A robot seaching for treasure in a maze. sample maze.
Lab 12, Mon 17 Apr - Thur 20 Apr
(pdf) An automatic robot: he turned into a video game.


Last Semester's Lab Assignments

This semesters will be different. Some slightly different, some very different.
You must do this semester's assignments; last semester's are worth no points now.

Mon 12 Dec - Thur 15 Dec
Nothing will be accepted for grading more than 1 week after your deadline for lab 12.