Monday, December 01, 2008

Plans for APS

Next year I will be teaching Algorithmic Problem Solving (APS) in first semester, a subject that I have developed and worked on over a few years. At the start of this year I trialled portfolio assessment with some success in this subject, though I improved on this in semester 2 with Object Oriented Programming. So what am I going to do differently next year?

Greater focus on the portfolio assessment: The portfolio assessment was good in this subject last year, but the focus can be even better. I found that this helped the students focus on what was important in OOP, the intended learning outcomes. My plan is to provide assessed learning activities during the semester, the resulting work will then be included in the students' portfolios. 

Simpler book: The first few times I ran this subject we used the language manual that comes with the language we are using. Its very dry, and not presented in an order that is useful for learning. This year I tried providing my own details, but didn't really get that right. So next year I will be providing a new book.

The book is what I am focusing on now. This will use a syntax based approach to learning the language, along with clear descriptions and illustrations to help students understand the programming abstractions. At this stage I have the following sections for the book:
  1. Programs - introduces the Program abstraction and a large number of new "programming language" terms such as identifier, keyword, procedure, procedure call, expression, literal, etc.
  2. Creating Procedures - focuses on creating your own procedures. 
  3. Storing and Using data - variables, and the assignment statement.
  4. Passing Data Around - introduces parameters (both in, out, and in/out).
  5. Calculating Values - covers functions and function calls.
  6. External Libraries - introduces units, shows how to use external units, and provides an example function from the SysUtils unit.
  7. User Input - Up to this stage we will have been using literal values, but now all of the framework is in place to understand user input. This includes ReadLn, as well as reading command line arguments.
  8. Branching - Indicates the change from programming "infrastructure" to control flow, and algorithm design.
  9. Looping - For, while, repeat, etc...
  10. Data abstractions - now the focus changes to the programming abstractions for data. This will include arrays, records and pointers.
  11. Creating Libraries - Lastly onto creating your own programming libraries
My idea for this is to have each section as self contained as possible. Knowledge will be built up without the need for any "magic". This is the reason for delaying user input... this requires functions and out parameters, with library use being necessary if you want to convert values from strings to integers for example.

These 11 chapters will be covered in the first five weeks of the semester. Week one will cover 1 & 2, week two will be 3 & 4, week three on 5, 6 & 7, week four on 8 & 9, and week five on 10 & 11. This leaves seven weeks of the semester to learn about how these abstractions are used to create programs. 

Along with this I am aiming to keep the explanation of each concept or part of the syntax down to a single page, where possible. This is enough room to convey the important aspects, but not too much that the end result is overwhelming. It should also help to create a useful reference, where each idea has its own page. So far I am up to chapter 5 which start at page 39, so there isn't too may pages per chapter.

Let me know what you think. I'll post up some chapters later...


No comments: