Skip to content

Latest commit

 

History

History
168 lines (154 loc) · 16.8 KB

index.org

File metadata and controls

168 lines (154 loc) · 16.8 KB

Imperative & Object-Oriented Programming Methodology

How IOOPM Works

If you are visiting this page for the first time, you should probably read the page about the course first. mark:Mandatory%20reading!

What You Should be Doing the First Week

In no particular order, and preferably somewhat in parallel:

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.

Who is Running the Course in 2018?

Check out this page.

The Coding Exam

The course does not use a traditional closed-book exam. Read this page for more information about he coding exam.

The SIMPLE Methodology

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.

Lecture Schedule with Slides

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.

PhaseStartFinishRemark
1Week 36Week 42Getting started, Imperative programming
2Week 43Week 48Object-Oriented Programming
3Week 49Week 3Software Project

Phase 1 (Imperative Programming)

DateContentsAchievementsfab:slideshare
<c>
3/9Grundläggande datatyper, deklaration, uttryck och satser. Funktioner. Enkel I/O. Enkel stränghantering.A1 (F13, G15)Slides Code
6/9Poster och unioner. Typnamnsdefinitioner. Funktionspekare. Separatkompilering och headerfiler.A3, D9, G15, G16, (I22), K30.-”-
10/9Dynamisk minnesallokering. Pekare.E10, H20, J26, J27, M38-”-
13/9Introduktion till resten av kursen. Skillnad mellan funktionell och imperativ programmering. SIMPLE. Det agila upplägget.C7-”- (p160)
17/9Stack och heap, länkade strukturer, pekare 1/2.E10, H20, J26, M36Slides
19/9Stack och heap, länkade strukturer, pekare 2/2.J27, M37, M39-”-
24/9Introduction to testing with CUnitG18, Q49, Q50Slides
27/9Automatisering (Make, scripting) och optimering.T55, U57, V58, P45-”-
1/10Design & metodologi. Hur strukturerar man? Top-down, bottom-up. Lagertänkande.N41Slides
4/10Modularisering, separatkompilering, coupling & cohesion.TBA-”-
8/10Defensiv programmering. Läsbar kod.I22, P45Slides
11/10Preprocessorn. Bitmanipulering.O42, O43, O44-”-
15/10BackupTBA
18/10Prepping for code examTBA

Phase 2 (Object-Oriented Programming)

DateContentsAchivementsfab:slideshare
25/10Introduktion till objektorientering.TBATBA
26/19Översikt: skräpsamling, undantagshantering, JVM:en, JIT-kompilering.TBATBA
29/10Ett första objektorienterat programA2, M37, N40TBA
1/11Objektorienterad analys och design. Konstruktorer. Instantiering, referenser, klassvariabler.A2, B4, B5, B6, C8, H19, H20, H21, E11, E12, K30, K31, K32TBA
5/11Arv och klasshierarkier. Överlagring. Overriding.A2, B4, B5, B6, C8, H19, H20, H21, E11, E12, K30, K31, K32TBA
8/11Överlagring av konstruktorer. Abstrakta klasser. Interface. Genericitet.A2, B4, B5, B6, C8, H19, H20, H21, E11, E12, K30, K31, K32TBA
12/11Identitet och ekvivalens. Inkapsling. Inre och nästlade klasser. Wrapperklasser.A2, G15, G16, G17TBA
15/11Testing of Object-Oriented ProgramsG18, P46, Q49, Q50, Q51TBA
19/11Statisk vs. dynamisk bindning. Profilering. Refactoring. JIT-kompilering. Bytecode.N40, N41, O42, O43, O44TBA
22/11Garbage collection in-depth, and its relation to resource management.TBATBA
26/11BackupTBA
29/11BackupTBA
3/12Prepping for code examTBA

TBA in 2018: Guest lecture from Oracle JVM engineers.

Phase 3 (Methodology and Tools)

DateContentsAchievementsfab:slideshare
10/12Project presentations, software projectsTBATBA
18/1Retrospective & guest lectureTBATBA

Deadlines

Deadlines and important dates in chronological order. Read here about soft and hard deadlines.

DateDeadlineComment
14/9Groupie AchievementOnly one hand-in per group
14/9C BootstrapPrerequisite for starting on Assignment 1
5/10Assignment 1 (Soft)
19/10Assignment 1 (Hard)
19/10Assignment 2 (Soft)
24/10Coding Exam 1Sign-up not open yet.
26/10Assignment 2 (Hard)
26/10Java BootstrapPrerequisite for starting on Assignment 2
16/11Assignment 3 (Soft)
30/11Assignment 3 (Hard)
30/11Assignment 4 (Soft)
1/12Last day to hand in essayEssay is not mandatory
11/12Assignment 4 (Hard)
11/12Coding Exam 2Sign-up not open yet.
13/12Last possibility to do X62This is a not mandatory achievement
19/12Coding Exam 3Sign-up not open yet.
DecemberEssay feedback seminarsMandatory presence for essay writers
14/1 2019Project (Hard)
16/1 2019C7 deadline
16-18/1 2019Project SeminarsMandatory presence for all

Exercises, Assignments and Projects

Note that assignments mostly act as drivers to learn concepts and produce evidence for demonstrating mastery of achivements.

WhatStartEndCapsule summary
C bootstrap exercises3/914/9Lots of small tasks to get familiar with C
Assignment 1 (C)17/95/10Follow us on an excursion in C while implementing two basic data structures
Assignment 2 (C)8/1019/10Put the above data structures to use in a larger program
Java bootstrap exercises22/1026/10Finish an existing program skeleton for a simulation of cashier registers
Assignment 3 (Java)29/1016/11TBA
Assignment 4 (Java)19/1130/11TBA
Project group work3/1214/1 2019Implement memory management systems for C programs

Resources

General

C Programming

Java Programming

Screencasts

Screencasts from old instances of the course are available.

FAQ

A minimal FAQ is available.

Links

Recent Changes

Substantial changes are announced in Piazza. For everything else, use the git log. Complete change tracking is possible by following these pages on GitHub.