- Enter the information we need about you in the AU Portal to complete the setup:
- Your GitHub account (get one if you need one)
- Your ZOOM number
- A clear picture that looks reasonably like your ID or Passport
- Perform the necessary steps to connect to Cloud 9
- Checkout your git repository in Cloud 9
- Look through this website! Especially read about how this course works, deadlines and labs, and form a mental model for what you need to do to pass with the grade that you want.
- Familiarise yourself with the SIMPLE methodology – an attempt at codifying some good practises for thinking about coding, actual coding, and refactoring.
- If you want to work on your own machine without Internet access, install the necessary tools.
- Start working on the C bootstrap exercises.
- Make sure you have a working setup for collaborating with other students, and taking demonstrations. Notably, this includes a working web camera so that we can see your face.
- Get in touch with your group, find someone to pair program with during the labs.
Check out this page for details. The primary mode of 1-1 contact is MatterMost. Use Piazza to ask general questions. The course has en email address [email protected] which is checked at least once a week. Never use the teachers’ normal addresses unless asked to explicitly because we need to be able to keep everything else we are doing outside of the IOOPM stream .
The course is divided into 3 phases. Phases 1 and 2 are furthermore divided into 2 sprints each, and each sprint roughly corresponds to one assignment.
Phase | Start | Finish | Remark |
---|---|---|---|
1 | Week 36 | Week 42 | Getting started, Imperative programming |
2 | Week 43 | Week 48 | Object-Oriented Programming |
3 | Week 49 | Week 2 | Software Project |
Note that without exception, all lectures start at 10:15 and are scheduled to end at 12:00. The full schedule is available on TimeEdit. We aim to be able to deliver some content ahead-of-time. More details will emerge. Until then, plan as if the lectures are given live and recorded for posterity.
Note. The schedule below points to the old slides from 2019. These will be updated incrementally for 2020 at which points these links will change to simply ”Slides”.
Date | Contents | Achievements | fab:slideshare |
---|---|---|---|
<c> | |||
1/9 | Grundläggande datatyper, deklaration, uttryck och satser. Funktioner. Enkel I/O. Enkel stränghantering. | A1 (F13, G15) | Old slides Code |
4/9 | Poster och unioner. Typnamnsdefinitioner. Funktionspekare. Separatkompilering och headerfiler. | A3, D9, G15, G16, (I22), K30. | -”- |
7/9 | Dynamisk minnesallokering. Pekare. | E10, H20, J26, J27, M38 | -”- |
10/9 | Introduktion till resten av kursen. Skillnad mellan funktionell och imperativ programmering. SIMPLE. Det agila upplägget. | C7 | -”- (p160) |
14/9 | Stack och heap, länkade strukturer, pekare 1/2. | E10, H20, J26, M36 | Old slides |
17/9 | Stack och heap, länkade strukturer, pekare 2/2. | J27, M37, M39 | -”- |
21/9 | Introduction to testing with CUnit | G18, Q49, Q50 | Old slides |
24/9 | Automatisering (Make, scripting) och optimering. | T55, U57, V58, P45 | -”- |
28/9 | Design & metodologi. Hur strukturerar man? Top-down, bottom-up. Lagertänkande. | N41 | Old slides |
1/10 | Modularisering, separatkompilering, coupling & cohesion. | TBA | -”- |
5/10 | Defensiv programmering. Läsbar kod. | I22, P45 | Old slides |
8/10 | Preprocessorn. Bitmanipulering. | O42, O43, O44 | -”- |
12/10 | Backup (Terminalen) | V58 | Demo |
15/10 | Prepping for code exam | N/A |
Date | Contents | Achivements | fab:slideshare |
---|---|---|---|
26/10 | Introduktion till objektorientering. | Många kursivt | Old slides |
29/10 | Översikt: skräpsamling, undantagshantering, JVM:en, JIT-kompilering. | Många kursivt | Old slides |
2/11 | Objektorienterad analys och design. Konstruktorer. Instantiering, referenser, klassvariabler. | A2, B4, B5, B6, C8, H19, H20, H21, E11, E12, K30, K31, K32 | Old slides |
6/11 | Arv och klasshierarkier. Överlagring. Overriding. Överlagring av konstruktorer. Abstrakta klasser. Interface. Genericitet. | A2, B4, B5, B6, C8, H19, H20, H21, E11, E12, K30, K31, K32 | -”- |
9/11 | Typer, subtyper, Liskovs substitutionsprincip. Undantagshantering. | A2, G15, G16, G17 | Old slides |
12/11 | Identitet och ekvivalens, JUnit | G15, G16, G18, P46, Q49, Q50, Q51 | Old slides Junit |
16/11 | Profilering. JIT-kompilering. Bytecode. | N40, N41, O42, O43, O44 | Old slides |
19/11 | Refactoring. | A2 | Old slides |
23/11 | Garbage collection in-depth, and its relation to resource management. | J26, J27, J28, J29 | Old slides |
26/11 | Inkapsling. Inre och nästlade klasser. Wrapperklasser. | G15, G16, G17 | TBA |
30/11 | Reservtid. | ||
3/12 | Mjukvaruprojekt | Samtliga projektmål | TBA |
7/12 | Prepping for code exam | Samtliga projektmål | N/A |
10/12 | Backup | ||
14/12 | Backup |
Date | Contents | Achievements | fab:slideshare |
---|---|---|---|
15/1 | Retrospective & guest lecture | TBA | TBA |
Deadlines and important dates in chronological order. Read here about soft and hard deadlines.
Date | Deadline | Comment |
---|---|---|
1/9 | Presentation Achievement | Handed in by mail |
11/9 | C Bootstrap | Prerequisite for starting on Assignment 1 |
2/10 | Assignment 1 (Soft) | |
16/10 | Assignment 1 (Hard) | |
16/10 | Assignment 2 (Soft) | |
22/10 | Coding Exam 1 | Sign-up not open yet. Might happen on campus. |
1/11 | Java Bootstrap | Prerequisite for starting on Assignment 3 |
30/10 | Assignment 2 (Hard) | |
15/11 | Assignment 3 (Soft) | |
29/11 | Assignment 3 (Hard) | |
29/11 | Assignment 4 (Soft) | |
1/12 | Last day to hand in essay | Essay is for grades 4 and 5 only |
10/12 | Coding Exam 2 | Sign-up not open yet. Might happen on campus. |
12/12 | Last possibility to do X62 | This is a not mandatory achievement |
13/12 | Assignment 4 (Hard) | |
8/1 2020 | Coding Exam 3 | Sign-up not open yet. |
14–16/1 2021 | Project (Hard) | Deadline is 24 h before seminars |
15/1 2020 | C7 deadline | |
15–17/1 2021 | Project Seminars | Might happen on-campus! |
Note that assignments mostly act as drivers to learn concepts and produce evidence for demonstrating mastery of achivements.
What | Start | End | Capsule summary |
---|---|---|---|
C bootstrap exercises | 2/9 | 11/9 | Lots of small tasks to get familiar with C |
Assignment 1 (C) | 14/9 | 2/10 | Follow us on an excursion in C while implementing two basic data structures |
Assignment 2 (C) | 5/10 | 16/10 | Put the above data structures to use in a larger program |
Java bootstrap exercises | 19/10 | 25/10 | Finish an existing program skeleton for a simulation of cashier registers |
Assignment 3 (Java) | 26/10 | 13/11 | Implement a simple symbolic calculator |
Assignment 4 (Java) | 16/11 | 27/11 | Improve the symbolic calculator program using typical Java idioms |
Project group work | 30/11 | 14–16/1 2021 | Implement memory management systems for C programs |
- An introduction to Emacs is found here
- An introduction to Makefiles is found here
- An overview of the tools we use on the course is found here
- A minimal set of commands for working with git and GitHub is found here
- An IOOPM-specific clonable Trello board that you can use to track your own progress and plan your phases and sprints
- Machines at IT available for remote access and instructions for accessing them remotely
- Basic compiling instructions
- Basic C constructs overview and discussion
- An introduction to pointers and pointers to pointers
- Basic compiling instructions
Screencasts from old instances of the course are available.
A minimal FAQ is available.
Substantial changes are announced in Piazza. For everything else, use the git log. Complete change tracking is possible by following these pages on GitHub.