Skip to content

Latest commit

 

History

History
206 lines (171 loc) · 18.7 KB

index.org

File metadata and controls

206 lines (171 loc) · 18.7 KB

Imperative & Object-Oriented Programming Methodology

Information For New Students in 2020

Action Points Day One

  • 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

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.

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

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.

PhaseStartFinishRemark
1Week 36Week 42Getting started, Imperative programming
2Week 43Week 48Object-Oriented Programming
3Week 49Week 2Software 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”.

Phase 1 (Imperative Programming)

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

Phase 2 (Object-Oriented Programming) <<phase2lectures>>

DateContentsAchivementsfab:slideshare
26/10Introduktion till objektorientering.Många kursivtOld slides
29/10Översikt: skräpsamling, undantagshantering, JVM:en, JIT-kompilering.Många kursivtOld slides
2/11Objektorienterad analys och design. Konstruktorer. Instantiering, referenser, klassvariabler.A2, B4, B5, B6, C8, H19, H20, H21, E11, E12, K30, K31, K32Old slides
6/11Arv 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/11Typer, subtyper, Liskovs substitutionsprincip. Undantagshantering.A2, G15, G16, G17Old slides
12/11Identitet och ekvivalens, JUnitG15, G16, G18, P46, Q49, Q50, Q51Old slides Junit
16/11Profilering. JIT-kompilering. Bytecode.N40, N41, O42, O43, O44Old slides
19/11Refactoring.A2Old slides
23/11Garbage collection in-depth, and its relation to resource management.J26, J27, J28, J29Old slides
26/11Inkapsling. Inre och nästlade klasser. Wrapperklasser.G15, G16, G17TBA
30/11Reservtid.
3/12MjukvaruprojektSamtliga projektmålTBA
7/12Prepping for code examSamtliga projektmålN/A
10/12Backup
14/12Backup

Phase 3 (Methodology and Tools)

DateContentsAchievementsfab:slideshare
15/1Retrospective & guest lectureTBATBA

Deadlines

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

DateDeadlineComment
1/9Presentation AchievementHanded in by mail
11/9C BootstrapPrerequisite for starting on Assignment 1
2/10Assignment 1 (Soft)
16/10Assignment 1 (Hard)
16/10Assignment 2 (Soft)
22/10Coding Exam 1Sign-up not open yet. Might happen on campus.
1/11Java BootstrapPrerequisite for starting on Assignment 3
30/10Assignment 2 (Hard)
15/11Assignment 3 (Soft)
29/11Assignment 3 (Hard)
29/11Assignment 4 (Soft)
1/12Last day to hand in essayEssay is for grades 4 and 5 only
10/12Coding Exam 2Sign-up not open yet. Might happen on campus.
12/12Last possibility to do X62This is a not mandatory achievement
13/12Assignment 4 (Hard)
8/1 2020Coding Exam 3Sign-up not open yet.
14–16/1 2021Project (Hard)Deadline is 24 h before seminars
15/1 2020C7 deadline
15–17/1 2021Project SeminarsMight happen on-campus!

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 exercises2/911/9Lots of small tasks to get familiar with C
Assignment 1 (C)14/92/10Follow us on an excursion in C while implementing two basic data structures
Assignment 2 (C)5/1016/10Put the above data structures to use in a larger program
Java bootstrap exercises19/1025/10Finish an existing program skeleton for a simulation of cashier registers
Assignment 3 (Java)26/1013/11Implement a simple symbolic calculator
Assignment 4 (Java)16/1127/11Improve the symbolic calculator program using typical Java idioms
Project group work30/1114–16/1 2021Implement 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.

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.