If you are visiting this page for the first time, you should probably read the page about the course first. mark:Mandatory%20reading!
In no particular order, and preferably somewhat in parallel:
- 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.
- Get a GitHub account and let us know about its username so we can connect it to the course. Once this is done, you should check out your GitHub repository.
- If you want to work on your own machine, install the necessary tools.
- Start working on the C bootstrap exercises.
In addition to this, and outside of your control[fn::No, you cannot form your own team, no matter what the reasons are.], you will be placed in a group with about 10-12 other students. Throughout the course, this group will be your “team”, and you will be pairing with others from this team, and report back to the team regularly, and meet with your coach. Your will also cooperate on your first deliverable.
Check out this page.
The course does not use a traditional closed-book exam. Read this page for more information about he coding exam.
The SIMPLE methodology is an attempt at codifying some good practises for thinking about coding, actual coding, and refactoring. Read about in on this page.
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. 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 3 | Software Project |
Date | Contents | Achievements | fab:slideshare |
---|---|---|---|
<c> | |||
3/9 | Grundläggande datatyper, deklaration, uttryck och satser. Funktioner. Enkel I/O. Enkel stränghantering. | A1 (F13, G15) | Slides Code |
6/9 | Poster och unioner. Typnamnsdefinitioner. Funktionspekare. Separatkompilering och headerfiler. | A3, D9, G15, G16, (I22), K30. | -”- |
10/9 | Dynamisk minnesallokering. Pekare. | E10, H20, J26, J27, M38 | -”- |
13/9 | Introduktion till resten av kursen. Skillnad mellan funktionell och imperativ programmering. SIMPLE. Det agila upplägget. | C7 | -”- (p160) |
17/9 | Stack och heap, länkade strukturer, pekare 1/2. | E10, H20, J26, M36 | Slides |
19/9 | Stack och heap, länkade strukturer, pekare 2/2. | J27, M37, M39 | -”- |
24/9 | Introduction to testing with CUnit | G18, Q49, Q50 | Slides |
27/9 | Automatisering (Make, scripting) och optimering. | T55, U57, V58, P45 | -”- |
1/10 | Design & metodologi. Hur strukturerar man? Top-down, bottom-up. Lagertänkande. | N41 | Slides |
4/10 | Modularisering, separatkompilering, coupling & cohesion. | TBA | -”- |
8/10 | Defensiv programmering. Läsbar kod. | I22, P45 | Slides |
11/10 | Preprocessorn. Bitmanipulering. | O42, O43, O44 | -”- |
15/10 | Backup | TBA | |
18/10 | Prepping for code exam | TBA |
Date | Contents | Achivements | fab:slideshare |
---|---|---|---|
25/10 | Introduktion till objektorientering. | TBA | TBA |
26/19 | Översikt: skräpsamling, undantagshantering, JVM:en, JIT-kompilering. | TBA | TBA |
29/10 | Ett första objektorienterat program | A2, M37, N40 | TBA |
1/11 | Objektorienterad analys och design. Konstruktorer. Instantiering, referenser, klassvariabler. | A2, B4, B5, B6, C8, H19, H20, H21, E11, E12, K30, K31, K32 | TBA |
5/11 | Arv och klasshierarkier. Överlagring. Overriding. | A2, B4, B5, B6, C8, H19, H20, H21, E11, E12, K30, K31, K32 | TBA |
8/11 | Överlagring av konstruktorer. Abstrakta klasser. Interface. Genericitet. | A2, B4, B5, B6, C8, H19, H20, H21, E11, E12, K30, K31, K32 | TBA |
12/11 | Identitet och ekvivalens. Inkapsling. Inre och nästlade klasser. Wrapperklasser. | A2, G15, G16, G17 | TBA |
15/11 | Testing of Object-Oriented Programs | G18, P46, Q49, Q50, Q51 | TBA |
19/11 | Statisk vs. dynamisk bindning. Profilering. Refactoring. JIT-kompilering. Bytecode. | N40, N41, O42, O43, O44 | TBA |
22/11 | Garbage collection in-depth, and its relation to resource management. | TBA | TBA |
26/11 | Backup | TBA | |
29/11 | Backup | TBA | |
3/12 | Prepping for code exam | TBA |
TBA in 2018: Guest lecture from Oracle JVM engineers.
Date | Contents | Achievements | fab:slideshare |
---|---|---|---|
10/12 | Project presentations, software projects | TBA | TBA |
18/1 | Retrospective & guest lecture | TBA | TBA |
Deadlines and important dates in chronological order. Read here about soft and hard deadlines.
Date | Deadline | Comment |
---|---|---|
14/9 | Groupie Achievement | Only one hand-in per group |
14/9 | C Bootstrap | Prerequisite for starting on Assignment 1 |
5/10 | Assignment 1 (Soft) | |
19/10 | Assignment 1 (Hard) | |
19/10 | Assignment 2 (Soft) | |
24/10 | Coding Exam 1 | Sign-up not open yet. |
26/10 | Assignment 2 (Hard) | |
26/10 | Java Bootstrap | Prerequisite for starting on Assignment 2 |
16/11 | Assignment 3 (Soft) | |
30/11 | Assignment 3 (Hard) | |
30/11 | Assignment 4 (Soft) | |
1/12 | Last day to hand in essay | Essay is not mandatory |
11/12 | Assignment 4 (Hard) | |
11/12 | Coding Exam 2 | Sign-up not open yet. |
13/12 | Last possibility to do X62 | This is a not mandatory achievement |
19/12 | Coding Exam 3 | Sign-up not open yet. |
December | Essay feedback seminars | Mandatory presence for essay writers |
14/1 2019 | Project (Hard) | |
16/1 2019 | C7 deadline | |
16-18/1 2019 | Project Seminars | Mandatory presence for all |
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 | 3/9 | 14/9 | Lots of small tasks to get familiar with C |
Assignment 1 (C) | 17/9 | 5/10 | Follow us on an excursion in C while implementing two basic data structures |
Assignment 2 (C) | 8/10 | 19/10 | Put the above data structures to use in a larger program |
Java bootstrap exercises | 22/10 | 26/10 | Finish an existing program skeleton for a simulation of cashier registers |
Assignment 3 (Java) | 29/10 | 16/11 | TBA |
Assignment 4 (Java) | 19/11 | 30/11 | TBA |
Project group work | 3/12 | 14/1 2019 | 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
- An IOOPM-specific Google Spread Sheet for making burndown charts and tracking your velocity
- 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.