Web
Analytics
 

Imperative & Object-Oriented Programming Methodology

Table of Contents

Ask questions and discuss with other students on Piazza
Request demonstrations and track your progress at the AU Portal

1 Information For New Students in 2020

The first thing you do should be to go here and read about how the course will run in 2020. Then come back here and on you go!

1.1 Action Points Day One

1.2 Action Points Week One

  • 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.

2 Course Staff and How to Get In Touch

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 ioopm@it.uu.se 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 .

3 Course Time Lines

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. Recorded lectures appear here.

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’’.

3.1 Phase 1 (Imperative Programming)

Date Contents Achievements
1/9 Grundläggande datatyper, deklaration, uttryck och satser. Funktioner. Enkel I/O. Enkel stränghantering. A1 (F13, G15) 2020 slides
4/9 Poster och unioner. Typnamnsdefinitioner. Funktionspekare. Separatkompilering och headerfiler. A3, D9, G15, G16, (I22), K30. 2020 slides
7/9 Dynamisk minnesallokering. Pekare. E10, H20, J26, J27, M38 2020 slides
10/9 Introduktion till resten av kursen. Skillnad mellan funktionell och imperativ programmering. SIMPLE. Det agila upplägget. C7 2020 slides
14/9 Stack och heap, länkade strukturer, pekare 1/2. E10, H20, J26, M36 2020 slides
17/9 Stack och heap, länkade strukturer, pekare 2/2. J27, M37, M39 2020 slides
21/9 Introduction to testing with CUnit G18, Q49, Q50 2020 slides
24/9 Design & metodologi. Hur strukturerar man? Top-down, bottom-up. Lagertänkande. N41 2020 slides
28/9 Automatisering (Make, scripting) och optimering. T55, U57, V58, P45 2020 slides
1/10 Modularisering, separatkompilering, coupling & cohesion. TBA 2020 slides
5/10 Defensiv programmering. Läsbar kod. I22, P45 2020 slides
8/10 Preprocessorn. Bitmanipulering. O42, O43, O44 -’’-
12/10 Backup (Terminalen) V58 Demo
15/10 Prepping for code exam   N/A

3.2 Phase 2 (Object-Oriented Programming)

Date Contents Achivements
26/10 Introduktion till objektorientering. Många kursivt Slides
29/10 Översikt: skräpsamling, undantagshantering, JVM:en, JIT-kompilering. Många kursivt Slides
2/11 Objektorienterad analys och design. Konstruktorer. Instantiering, referenser, klassvariabler. A2, B4, B5, B6, C8, H19, H20, H21, E11, E12, K30, K31, K32 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 Slides
12/11 Identitet och ekvivalens, JUnit G15, G16, G18, P46, Q49, Q50, Q51 Slides Junit
16/11 Profilering. JIT-kompilering. Bytecode. N40, N41, O42, O43, O44 Slides
19/11 Refactoring. A2 Slides
23/11 Inkapsling. Inre och nästlade klasser. Wrapperklasser. G15, G16, G17 TBA
26/11 Garbage collection in-depth, and its relation to resource management. J26, J27, J28, J29 Slides
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    

3.3 Phase 3 (Methodology and Tools)

Date Contents Achievements
15/1 Retrospective & guest lecture TBA TBA

4 Deadlines

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!

5 Exercises, Assignments and Projects

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

6 Resources

6.1 General

6.2 C Programming

6.3 Java Programming

6.4 Screencasts

Screencasts from old instances of the course are available.

6.5 FAQ

A minimal FAQ is available.

7 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.


Questions about stuff on these pages? Use our Piazza forum.

Want to report a bug? Please place an issue here. Pull requests are graciously accepted (hint, hint).

Nerd fact: These pages are generated using org-mode in Emacs, a modified ReadTheOrg template, and a bunch of scripts.

Ended up here randomly? These are the pages for a one-semester course at 67% speed on imperative and object-oriented programming at the department of Information Technology at Uppsala University, created by Tobias Wrigstad.

Author: Tobias Wrigstad

Created: 2020-11-23 mån 02:47

Validate