EEN218 (Programming 2) Spring 2006, Tue Thur 12:30-1:45
- Official Syllabus.
- Downloads: Software to make things work
- The book: The book
- For Reference or Review:
- Examinations:
- Mid-Term Examination: Tuesday 7th March.
- End-Term Examination: Thursday 13th April.
- Final Examination: Thursday 4th May, 11:00 a.m.
- Assignments:
- Assignment 1 - Mandelbrot set explorer, due 2006-01-31.
- Assignment 2 - Draw whole Mandelbrot set nicely, due 2006-02-07.
- Assignment 3 - Add a zoom-in feature and iterative deepening, due 2006-02-14.
- Assignment 4 - Create extended shape classes and make flag-drawing functions, due 2006-02-28.
(crescent how-to),
(more flag samples).
- Assignment 5 - Create a class to represent rational numbers, and define all the standard operators.
Make a calculator application around it. (use the unix system). due 2006-03-21.
- Assignment 6 - Create a class to represent integers with perfect precision and an unlimited
number of digits. Build a useful calculator application around it. (use the unix system with CGI). due 2006-04-04.
- Assignment 7 - Build a database that is capable of reading the data from any of these data sets
into memory, and answering simple queries, Who is the oldest person? How many people live in city X? Who is the
oldest person in city Y? What is the address of Mrs Mandy Diddly? Whose SSN is 239209329? That sort of thing, you
can make up a reasonable set of queries. due 2006-04-29.
- Assignment 8 - Two parts:
- Add a sort operation, so that the user may request that the records in the database are
displayed in a long list, in ascending order of birth-date.
- Restructure your database so that it uses a linked list instead of a growable array/vector.
due 2006-05-09.
- Extra Credit Assignments:
- Extend your big integer calculator to provide very big floating point calculations, so the user could perhaps
select 1000 digit precision, calculate 1/7, and see the result correct to 1000 digits. Of course, you
could also do more interesting calculations.
- Make an internet runnable version of your complex number calculator.
- Make an internet runnable version of your rational number calculator.
- Make a combined calculator that at the press of a button converts between very big float, very big int, rational,
or complex calculations, internet runnable like the rest.
- Make a nice, user friendly, and easy to use windows application out of any or all of the above calculators.
Something like the microsoft calculator that comes with windows, except that it should be nice, user friendly,
and easy to use. And useful.
- Either internet runnable, or as a windows application, make a convenient units converter, so that all the
things you work out in chemistry and physics classes, in units of metres or kilograms per litre or whatever,
can be converted into meaningful human units like roods and scruples.
("useful" data).
- Extra Assistance: Assistants' Office Hourse
- Chris, Thursdays 6:15 pm to 8:15 (note change), in EB 516 (Dr. Murrell's Office).
- Karl, Fridays 10:00 am to 12:00, in EB 504 lab.
- Class History:
- Class 1 (17-1-2006) Introductions etc; Motivating the complex-numbers case-study.
(Notes).
- Class 2 (19-1-2006) Defining the complex number data-type: representation and operations.
Demo: (exe).
- Class 3 (24-1-2006) Unix and Windows applications; exploring the Mandelbrot and Julia sets.
(test data).
- Class 4 (26-1-2006) Engineering colours and curves; introducing data protection.
- Class 5 (31-1-2006) Mixing two representations in a single object; dangers of incorrect accesses; perceived need for data protection.
- Class 6 (2-2-2006) Data protection: protected and public; members and methods; constructors.
(handout).
- Class 7 (7-2-2006) Objects as active components of a program, not just repositories for data.
- Class 8 (9-2-2006) The flag case-study;
separate compilation .cpp .h .obj .exe (example);
(Flag exercises).
- Class 9 (14-2-2006) Object Oriented Applications: shapes, rational numbers (fractions), and the super-calculator.
- Class 10 (16-2-2006) Memory addresses; pointers to arrays.
(example 1),
(example 2).
- Class 11 (21-2-2006) Layout of stack, heap, and globals; memory leaks; implementing resizable arrays.
(examples).
- Class 12 (23-2-2006) Array object to protect against over-runs; adding growth-on-demand.
- Class 13 (28-2-2006) The [] operator, reference variables; template classes; modularity of design.
- Class 14 (2-3-2006) Internet programming, web applications: HTTP, HTML, and CGI.
(microscopic windows web server).
- Class 15 (7-3-2006) Mid-term test.
(L1,
L2,
obj,
out)
- Class 16 (9-3-2006) Discussing objects for rational numbers; Internet programming part 2.
- Spring Break
- Class 17 (21-3-2006) Test review, evaluation strategy.
- Class 18 (23-3-2006) Managing large projects, stepwise refinement: the supercalculator
(class example).
- Class 19 (28-3-2006) Processing very large data sets: the database problem.
- Class 20 (30-3-2006) Scientific analysis of algorithms, how to speed up flexible array operations significantly.
- Class 21 (4-4-2006) Computer Assisted Analysis (class example); Difference between Linear and Quadratic Algorithms.
- Class 22 (6-4-2006) Pointers to single objects, pointers to arrays of pointers, and the resultant improvement in efficiency.
- Class 23 (11-4-2006) More time analysis; Effective use of pointers to arrays of pointers to objects.
- Class 24 (13-4-2006) Mid-term test. (the test, grading outline, and solutions)
- Class 25 (18-4-2006) Making a database out of a pointer to an array of pointers to objects. Avoiding duplicate data. Re-introducing sorting.
- Class 26 (20-4-2006) Analysing bubble sort and selection sort. Introducing merge sort.
- Class 27 (25-4-2006) Review of the time calculation for increasing array capacity; Beer and Linked Lists.
- Class 28 (27-4-2006)