ECE118 R/RC (Introduction to Programming) Autumn 2025
Tues, Thurs 2:00 - 3:15 in McArthur (Engineering) Annexe 220


Accessing your Unix accounts, once they have been set up:
PC log in - use Putty or your own preferred SSH app.
OR mac users: start the terminal app, windows users: start powershell, then type the command
ssh username@rabbit.eng.miami.edu and type your password when prompted.
Windows users beware: you can't use ctrl-V in pico, but page up and page down will do the job.

Class History

Class 1 - Tue 19-8-2025    Introductory bits.
Working out what six times nine is.
Sometimes the simplest things are the hardest to do.
The compilation cycle.
Class 2 - Thur 21-8-2025 Why computers use binary instead of decimal.
Modern programming languages are maniacally picky, but for good reason.
Important for Mac owners.
Operators and values.
Class 3 - Tue 26-8-2025 Solving quadratic equations:
step 1: Simplest possible approach just to get started
step 2: That used square root of a negative, this uses numbers that allow a solution
step 3: Named constants have many benefits
step 4: A conditional avoids the square root of negatives
step 5: This also notices when there is only one solution
step 6: User interaction is more flexible and useful
step 7: Two simple new functions make a nice improvement
Listing the numbers between 0 and 10: first incomplete version, and the correct version.
Class 4 - Thur 28-8-2025 A brief guest presentation.
Stack frames/activation records - little boxes of memory where functions remember their details.
Plotting a graph.
Class 5 - Tue 2-9-2025 Storage media (a slight aside).
Important graphics functions and some words about lab 2.
Programs should not use the words while, do, or for until further notice.
Programs should not use the word goto ever.
A closer examination of recursion and some more compelling examples:
      Graph plotter, first mystery, half of it, separating the digits of a number.
Class 6 - Thur 4-9-2025 Good design example: define one constant (width) and make others be a proportion of that.
More recursive divide-and-conquer design:
Printing numbers in words, just the digits,
Introducing arrays to make that more compact,
Plotting a graph that needs scaling,
Spirographs,
Calculating and listing powers of two.
Class 7 - Tue 9-9-2025 Good design: make function leave things exactly as they were when possible.
Plotting a 3D graph, the z axis is represented by colour:
        z = sin(hypot(x, y)) * sin(pow(hypot(x - 5, y - 5), 0.8)), range -10 to 10.
An absurdly long program,
and the tiniest beginnings of an improvement.
Class 8 - Thur 11-9-2025 The complete number speaker, very important to understand the recursion.
(A little aside about capitalising the first letter).
First look at an important example function, be sure you understand it.
Class 9 - Tue 16-9-2025
Class 10 - Thur 18-9-2025
Class 11 - Tue 23-9-2025
Class 12 - Thur 25-9-2025
Class 13 - Tue 30-9-2025
Class 14 - Thur 2-10-2025
Class 15 - Tue 7-10-2025
Class 16 - Thur 9-10-2025
Day off 14th
Class 17 - Thur 16-10-2025
Class 18 - Tue 21-10-2025
Class 19 - Thur 23-10-2025
Class 20 - Tue 28-10-2025
Class 21 - Thur 30-10-2025
Class 22 - Tue 4-11-2025
Class 23 - Thur 6-11-2025
Class 24 - Tue 11-11-2025
Class 25 - Thur 13-11-2025
Class 26 - Tue 18-11-2025
Class 27 - Thur 20-11-2025
Break 25th to 30th
Class 28 - Tue 2-12-2025


Lab Assignments

Which lab is assigned on which day?

Lab 1,   Mon 25th Aug - Thur 28th Aug.
(Lab 1 pdf) Using visual C++ to run programs; drawing stars and stick figures.
Lab 2, Tue 2nd Sep - Mon 8th Sep.
(Lab 2 pdf) Divide and conquer: building big programs from little functions.
Lab 3, Tue 9th Sep - Mon 15th Sep.
(Lab 3 pdf) Controlling repetition in programs.


The Remainder Of Last Year's Lab Assignments

This year's labs will NOT be the same, but will be similar.
You get no points for turning in a solution to last year's labs.

Submit assignments as a single word .docx document, including all your code and screenshots of it running, through blackboard.

Lab 4, Tue 17th Sep - Mon 23rd Sep.
(Lab 4 pdf) A video game: blowing things up with a cannon.
Lab 5,   Tue 24th Sep - Mon 30th Sep.
(Lab 5 pdf) A real-time animated clock application.
Lab 6,   Tue 1st Oct - Mon 7th Oct.
(Lab 6 pdf) Generating calendars and using Unix.
Lab 7,   Not happening this semester due to last week's closure.
(Lab 7 pdf) A happy street scene.
Lab 8,   Wed 16th Oct - Tue 22nd Oct.
(Lab 8 pdf) An interactive desk calculator.
Lab 9,   Wed 23rd Oct - Tue 29th Oct
(Lab 9 pdf) An interactive map, the data files: outlines and capitals.
Lab 10,   Wed 30 Oct - Tue 5 Nov
(Lab 10 pdf) Database programming under Unix.
The special timing function.
Lab 11,   Wed 6 Nov - Tue 12 Nov
(Lab 11 pdf) A robot searching for treasure in a maze. sample maze; alternate sample.
Lab 12,   Wed 13 Nov - Tue 19 Nov
(Lab 12 pdf) An automatic robot: he turned into a video game.




Last Semester's Assignments

The labs change every semester, and you don't get any credit for turning in an assignment from the wrong semester. This is just so you can see more-or-less what is coming.