AIM: To provide basic, functionally oriented familiarity with and initial gateway proficiency in programming based on (but not exclusively using) the Java language for beginners to computer programming. This, in preparation for more advanced courses oriented to building proficiency in areas of interest for digital productivity.
OUTLINE/SYNOPSIS: Digital productivity and the PC and other ICCT -- Information, Communication & Control Technologies -- in a Caribbean context. How it's done: lifting the lid on hardware + software. Functional first steps in Programming with the "Hello world" Java program, the I --> P --> O concept and its transformation into encapsulated objects with data, methods and message interfaces. Programing proficiency through instructive simple but not simplistic cases. A quick survey on the objects vs structured vs spaghetti code philosophies. Simulation Case: ballistics simulation without and with air resistance. Programming with PCs and with smart phone like devices (Android). Issues and challenges of real time, real world interfacing and control. Controls Case: a drip irrigation garden plot controller, also level control for a feed tank. A robot arm controller simulation: issues implied. A "simple" multimedia programming exercise. Setting up and carrying out simple projects. Student projects. Where to go from here.
SCOPE & SEQUENCE: The course is intended to cover the following topics in the following sequence, with room for options among cases to be studied and student projects to be undertaken, assuming a typical 15/16-week Semester context:
UNIT B -- Background Context & Rationale: The PC and other ICCT (Information, Communication & Control Technologies . . . adding to the usual "IT" or "ICT," industrial control and web-oriented multimedia) in Caribbean context, common digital formats for information/data, cracking the box on a hardware and software information systems and networks, to motivate the need for programming for various purposes.
UNIT F -- A "Hello World," functional foundation for Java- based Programming: Programming, hello world Java Programming, hello world Java (also cf. here for a step by step tutorial approach) and the wider framework of programming introduced by select examples. Programs as coded algorithms (step by step recipes) and the data structures (& storage) they use, thus the basic I --> P --> O information processing model: initialisation --> input, processing (step by step) & storage, output, and how this inverts into the object approach of encapsulated data and methods with messaging interface, thus the software window view.
UNIT 1 -- Building practical proficiency in basics of programming with Java etc: Introduces and motivates Programing proficiency through key ideas, a super-Pareto 99/1% pivotal point on "how much content," relevant background (pivoting on the epochal s/360 and the math-computing bridge, also the IPO concept, involving AI) leading to instructive simple but not simplistic cases -- starting with Hello, world! in light of a useful conceptual scheme for computing in an AI-General Machine world
UNIT 2 -- What's the buzz about objects and object-oriented programming?: A bit of a quick survey on the objects vs structured vs spaghetti code philosophies (cf. vid here, also useful modelling/design tools).
UNIT 3 -- Ballistics simulation as a first case study: A case study: creating a simple simulation or game. As a first step, creating a windowing environment based projectile simulation, first the ideal ballistics case then the case with air resistance. Then, a look at what is required for more advanced and relevant simulations, games and controllers.
UNIT 4 -- A cluster of possible simulations/games: Developing a realistic program for a significant situation, as a case study for a PC or a smart phone like device, accessed via web technologies.
UNIT 5 -- Introduction to & preview of real-world, real-time interfacing and control: using ports and addressing the responsiveness issue for control. Discrete state control vs control of dynamical systems (the leaky tank with level control in light of of inlet and outlet as an example; perhaps making reference to the float-ball control of water level in the tank of "our friend John" in the bathroom). The issues of control in real-time -- how much latency in response is acceptable [the 4 - 6 samples per rise time rule of thumb], how predictable is the processing time for control responses, how reliable are communications [the widely distributed SCADA case], the issue of collapse vs degradation of control if the real time constraint is missed: hard vs soft real-time systems. Practical challenges and solution approaches.
UNIT 6 -- Developing a case study: simple drip irrigation control for a garden/shade house plot; this being a discrete state controller tolerant of considerable latency. (Cf. Iseman.) Also, level control for a feed tank
UNIT 7 -- A further possible case study: a simple robot arm (emulated?) with a preview of what a full control system would require.
UNIT 8 -- A third possible case study: a simple multimedia exercise (gaming? [cf. Python-based pyglet exercise here])
UNIT 9 --Setting up and carrying out "simple" Projects: Projects (research, coding, emulation, interfacing) and evaluation.
UNIT 10 -- Epilogue: Where to go from here.