Brief questions for Marion from the meeting
- Will this module be run in the Mendi Lab?
- Are the students taking this course 2nd year?
- Would it be possible for me to get the email address of the lab technician so that I can confirm that Processing is loaded and works on the specified machines?
Course Structure
In order to clarify terms that I will be using in future posts I've included a suggestion for course structure below this paragraph using the first week of the module as an example. All submodules hereafter will follow a similar general structure. Brad and Marion please leave a comment regarding this suggested course structure, if you have any problems with it or any suggestions for improvement as they will be greatly appreciated:
Module : An Introduction to Programming with Processing (approx 5 Weeks)
SubModule: Programming Overview (1 week)
SubModule Project: Recreate the provided illustrated image as closely as possible using only code (Project issued at the beginning of the current module and due in at the commencement of the following module)
Quiz: 10 Question Quiz to be completed in class at the end of the module (30 mins)
Current Suggestions on documentation development
It was determined that the most logical approach to the course would be to have the documentation and lectures follow the same course structure. Please see the end of the post for a more detailed course overview of the first submodule.
Student Exercises
Each submodule has a submodule project that will test the students knowledge of the module as a whole leading to the current module they have just completed. Submodule exercises should not take up more than a few hours of student time outside of the training period. Marion, please could you confirm that students will have at least 1 hour per day (5 hours per week) after training to work on their main project and submodule projects? This time frame would be most suitable regarding the amount of time required for students to complete their projects and not cut into lecture-time. Unfortunately, any amount of time less than this would require course restructuring, which is still possible at this early stage but will need to be determined as soon as possible.
RSS Feed Visualization SubModule Project
Brad made an excellent suggestion for a more advanced submodule project that can possibly be issued during the Object Oriented Programming submodule in week six.
Currently this project has been referred to as "RSS Feed Visualization SubModule Project". The submodule project will incorporate getting the students to create a visualization of reatime data from an online server such as lastfm. Brad has already started work on his own visualization in Processing and has confirmed that he will be willing to share his example with me for the purpose of the course and documentation. Brad, please could you send me a copy of the pde and any additional information that might be of use to me regarding possibly using this as a submodule exercise. If you have any links explaining the techniques used they would be most useful, even if they are in other programming languages they could still be useful.
I find Brad's RSS Feed Viz Project to be an appealing idea as this will give the students a hands on experience regarding working with external data from a live source. The project can also be adapted to something useful for the students themselves as each submodule project with require that each student mines and filters their own data resulting in each RSS feed Viz project being unique. Ideally this is something that can be developed into a useful portfolio piece if the student chose to take the idea further.
Please also note that each student is given an allocated amount of data at the start of each month in terms of internet usage at UCT. As they will only require access to an XML file which will be the live component, this project and any other project that is a part of this module cannot require that the students request large amounts of live data.
Thank you, Brad most sincerely for your suggestion. I look forward to investigating the possibility of incorporating it as a submodule project.
Main Project
Currently our (Marion, Brad and Lyndon) discussions relating to the main project are.
- The Klipfontein project still seems the most viable and logical choice for a main project. Such a project would encompass all aspects of the module as a whole.
Current Submodule Structure
Please note that not all submodules will follow the same structure listed below. This outline is simply to give you an indication of what I would like to include in the documentation for the first submodule. Please let me know as soon as possible if you are unclear about or would like to discuss further items listed below.
Introduction to Programming with Processing
Programming Overview (suggested time frame 1 week, approximately 4-5 hours of training, minimum required student time approximately 7-9 hours including submodule project)
The Hardware Software Cycle
Computer Architectures 64 bit processors and 32 bit processors etc
How does hardware work, electricity and binary
What is software?
What is a program, a statement, a command and how does this define source code?
Interacting with computers
Operating systems
Applications
Open Source vs Proprietary Software
Philosophy
Licences, CC GPL
Lower Level Languages
System Compatibility
Lower Level interactions
Computer Readable vs Human Readable Languages (the need for Higher Level Languages)
Procedural Programming (tailoring the data to the program)
Higher Level Languages
Compiled languages
System independence (operating systems, the Internet)
Abstraction
Speed issues compromises, how this is changing (dynamic runtime optimization)
Object Oriented Programming (tailoring the program to the data)
Software Development
What is software development?
What role does programming play in software development?
What is required to create a software program's source code?
IDE: Libraries, Symbolic links, Source code → Binary → Executable
Compiler: Conversion of code to a system specific code format
Run-Time environments: A means of end users interfacing with code, abstraction layers, code portability
Introduction to Processing
Brief history
Prototyping
Java
Web, Javascript, cross platform compatibility
processing.org forum and discourse
Downloading, installing and running processing (as most students would have never used an IDE)
PDE
Sketches
.pde
sketches folder
Basic mode (procedural programming)
Run
Compilation
Export
distribution
JRE
“hello world”, “hello line”, “hello mouse”
Definitions used in documentation
Planning a project
Pseudo Code
Refine Code
Visualize Code
Stepwise Code refinement Identify a task and break it down into steps, start identifying code logic within each step
Coded image
An introduction to processing drawing commands. The purpose of this sub-module is to teach students how to draw with code by using Processing's drawing tools but at the same time bearing in mind that there are key differences between drawing tools of a vector based application such as illustrator, flash etc in comparison to creating an image with code. The basic idea is to convey a sense of understanding that you define a program's logic. A square, circle or a line can clearly be distinguished for humans but are really no different to a machine as they are simply just different arrangements of pixels. The idea is to separate the students logic from the automation that comes from dealing with higher level applications like a vector illustration package and to deconstruct the “intelligence” of software, by assisting the students in realizing that level of automation that occurs in dealing with such higher level applications and how that needs to be programmed into software.
The main project for this submodule will be for the students to create a sketch in Processing where they use Processing's command based 2D primitive drawing tools to recreate an image as close as possible to the original image.
This project is listed as first because it will provide a basic introduction to code, with a visual representation of their code apon completion of their projects, I feel is more rewarding than creating a “hello world program” (A hello world section is however included in one of the lectures). Secondly this project will be done in Processing's basic mode and will result in a static sketch. This will give the students an understanding of procedural programming. Subsequently no mention of functions, methods or objects is necessary at this level (although would not hurt if they did have a basic introduction to some of these concepts), nonetheless these concepts need only be addressed at a later stage during the course, keeping things simple at this early stage.
Concepts that will be addressed within this submodule include
The processing run-time environment
The Cartesian graph system
Display window and pixels as a unit of measurement
basic mode sketches and the term static sketches, procedural programming
commands and parameters
syntax:: parenthesis, semicolons, commas (Applicable only to this submodule not math-based)
commands → statements → program
color, hex values, rgb values and alpha
size()
background()
line()
ellipse()
rect()
triangle()
point()
arc()
fill()
stroke()
noStroke()
noFill()
text()
width()
height()
Attributes
ellipseMode()
rectMode()
smooth()
Standardized coding practices
comments
whitespace
Errors and Exceptions
Syntax errors
Logical errors
Each submodule should be approximately 1 week at 6 hours of training per week. The students will be be assigned a submodule project at the end (or close to the end) of each submodule. Submodule projects will be structured so that one project complements the next where ever possible. This is a basic suggestion of the first submodule and is currently open for discussion before commencement of the documentation creation for this submodule, as I am currently working on the basic structure of the other submodules.