# OPI-Spring2008

(Difference between revisions)
Jump to: navigation, search
 Revision as of 12:36, 15 January 2008 (edit)← Previous diff Current revision (17:12, 23 May 2008) (edit) (undo) (→Project) (17 intermediate revisions not shown.) Line 60: Line 60: || Exercises: P5.2, P5.3, P5.8, P5.9, R5.1, R5.6, R5.8, R5.13, || Exercises: P5.2, P5.3, P5.8, P5.9, R5.1, R5.6, R5.8, R5.13, |- |- - | 38 || Mon 18 Feb || LB || Array and Array Lists|| ch. 7 (- 7.8) + | 38 || Mon 18 Feb || JT || Array and Array Lists|| ch. 7 (- 7.8) [[http://www.itu.dk/people/birkedal/teaching/opi-Fall-2007/ch07.pdf slides]], [[http://www.itu.dk/people/birkedal/teaching/opi-Fall-2007/ch07.pdf slides]], [[http://www.itu.dk/people/birkedal/teaching/opi-Fall-2007/ch07.zip examples]] [[http://www.itu.dk/people/birkedal/teaching/opi-Fall-2007/ch07.zip examples]] || Exercises: R6.2, R6.3, R6.5, P6.2, P6.4, P6.5, P6.7, P6.8 || Exercises: R6.2, R6.3, R6.5, P6.2, P6.4, P6.5, P6.7, P6.8 |- |- - | 38 || Wed 20 Feb || LB || reserved || N/A + | 38 || Wed 20 Feb || JT || Object references, the main method, comments and documentation comments. QUIZ with spectacular prize! || 2.10, 1.6, 3.3 || Exercises: catch up with earlier exercises || Exercises: catch up with earlier exercises |- |- Line 96: Line 96: || Exercises: continue with the earlier ones || Exercises: continue with the earlier ones |- |- - | 43 || Mon 17 Mar || CS || Designing Classes || ch. 8 (- 8.10) + | 43 || Mon 17 Mar || LB || Designing Classes || ch. 8 (- 8.10) [[http://www.itu.dk/people/carsten/courses/opi-E07/ch08/ch08.pdf slides]] [[http://www.itu.dk/people/carsten/courses/opi-E07/ch08/ch08.pdf slides]] [[http://www.itu.dk/people/carsten/courses/opi-E07/ch08/ch08.zip examples]] [[http://www.itu.dk/people/carsten/courses/opi-E07/ch08/ch08.zip examples]] || Exercises: R17.1, R17.2, R17.3, P17.1, P17.2, P17.3, P17.7, P17.8 || Exercises: R17.1, R17.2, R17.3, P17.1, P17.2, P17.3, P17.7, P17.8 |- |- - | 43 || Wed 26 Mar || CS || Interfaces || ch. 9 (- 9.5) + | 43 || Wed 26 Mar || LB || Interfaces || ch. 9 (- 9.5) [[http://www.itu.dk/people/carsten/courses/opi-E07/ch09/ch09.pdf slides]] [[http://www.itu.dk/people/carsten/courses/opi-E07/ch09/ch09.pdf slides]] [[http://www.itu.dk/people/carsten/courses/opi-E07/ch09/ch09.zip examples]] [[http://www.itu.dk/people/carsten/courses/opi-E07/ch09/ch09.zip examples]] || Exercises: R8.1, R8.4, R8.19, P8.1, P8.2, P8.3, P8.5, P8.8, P8.11 || Exercises: R8.1, R8.4, R8.19, P8.1, P8.2, P8.3, P8.5, P8.8, P8.11 |- |- - | 44 || Mon 31 Mar || CS || Inner Classes || ch. 9 (9.6) + | 44 || Mon 31 Mar || JS || Inner Classes || ch. 9 (9.6) - N/A + [[http://www.itu.dk/~sarnat/ch09-modified.pdf slides]] + [[http://www.itu.dk/~sarnat/listener-examples.zip examples]] || Exercises: R9.3, P9.5, P9.6, P9.7 || Exercises: R9.3, P9.5, P9.6, P9.7 |- |- - | 44 || Wed 02 Apr || AP || Inheritance || ch. 10 (- 10.9, 10.10, 10.11) + | 44 || Wed 02 Apr || CS || Inheritance || ch. 10 (- 10.9, 10.10, 10.11) [[http://www.itu.dk/people/poswolsky/OPI-E07/ch10.pdf slides]] [[http://www.itu.dk/people/poswolsky/OPI-E07/ch10.pdf slides]] [[http://www.itu.dk/people/poswolsky/OPI-E07/ch10.zip examples]] [[http://www.itu.dk/people/poswolsky/OPI-E07/ch10.zip examples]] Line 127: Line 128: || Exercises: R11.8, R11.15, R11.19, P11.4, P11.7, P11.11 || Exercises: R11.8, R11.15, R11.19, P11.4, P11.7, P11.11 |- |- - | 46 || Mon 14 Apr || CS || Object-Oriented Design || ch. 12 + | 46 || Mon 14 Apr || JS || Object-Oriented Design || ch. 12 [[http://www.itu.dk/people/carsten/courses/opi-E07/ch12/ch12.pdf slides]] [[http://www.itu.dk/people/carsten/courses/opi-E07/ch12/ch12.pdf slides]] [[http://www.itu.dk/people/carsten/courses/opi-E07/ch12/ch12.zip examples]] [[http://www.itu.dk/people/carsten/courses/opi-E07/ch12/ch12.zip examples]] || Exercises: R2.11, P2.13, P3.18, R9.22*(optional), P9.21, R10.18, P10.16, P10.17 || Exercises: R2.11, P2.13, P3.18, R9.22*(optional), P9.21, R10.18, P10.16, P10.17 |- |- - | 46 || Wed 16 Apr || CS|| Graphics || ch. 18 + | 46 || Wed 16 Apr || JS|| Threads || ch. 20 + [[http://www.itu.dk/~sarnat/threads-notes.pdf slides from class]] + [[http://www.itu.dk/people/carsten/courses/opi-E07/ch20/ch20.pdf book slides]] + [[http://www.itu.dk/people/carsten/courses/opi-E07/ch20/ch20.zip book examples]] + || Exercises: catch up + |- + | 47 || Mon 21 Apr || CS || Graphics || ch. 18 [[http://www.itu.dk/people/poswolsky/OPI-E07/ch18.pdf slides]] [[http://www.itu.dk/people/poswolsky/OPI-E07/ch18.pdf slides]] [[http://www.itu.dk/people/poswolsky/OPI-E07/ch18.zip examples]] [[http://www.itu.dk/people/poswolsky/OPI-E07/ch18.zip examples]] - || Exercises: catch up - |- - | 47 || Mon 21 Apr || CS || Threads || ch. 20 - [[http://www.itu.dk/people/carsten/courses/opi-E07/ch20/ch20.pdf slides]] - [[http://www.itu.dk/people/carsten/courses/opi-E07/ch20/ch20.zip examples]] || Exercises: R18.3, R18.14, P18.1, P18.3, P18.7, P18.9 || Exercises: R18.3, R18.14, P18.1, P18.3, P18.7, P18.9 |- |- Line 148: Line 150: || Exercises: R20.2, R 20.8, P20.1, P20.4, P20.7 || Exercises: R20.2, R 20.8, P20.1, P20.4, P20.7 |- |- - | 48 || Mon 26 Apr || CS || Project Intro || see below + | 48 || Mon 26 Apr || CS || Connect 4 || see below || Project || Project |- |- - | 49 || Wed 30 Apr || CS || Game Trees || see below + | 49 || Wed 30 Apr || CS || Connect 4 || see below || Project || Project |- |- - | 49 || Mon 05 May || Cs || Game Trees || see below + | 49 || Mon 05 May || Cs || Connect 4 || see below || Project || Project |- |- - | 49 || Wed 14 May || CS || Game Trees || see below + | 49 || Wed 14 May || CS || Connect 4 || see below || Project || Project |- |- - | 49 || Mon 19 May || CS || Game Trees || see below + | 49 || Mon 19 May || CS || Connect 4, Design by contract || see below || Project || Project |} |} - In weeks 49-51, students work on the project (more info to come). + === Research Paper === + [[http://www.itu.dk/people/carsten/courses/opi-F08/DesignByContract.pdf Betrand Meyer. Design by contract.]] === Project === === Project === - The project is about implementing a Connect 4 program. In the [[http://www.itu.dk/people/carsten/courses/opi-E07/project/project.pdf project description]] you find three homework problems, that you are expected to hand in. See schedule below. The player interface is available from [[http://www.itu.dk/people/carsten/courses/opi-E07/project/java/connect4code.tgz here]] (or [[http://www.itu.dk/people/poswolsky/OPI-E07/Player.java Player.java]] )For simplicity, this version of the referee does not take time. The code for the + The project is about implementing a Connect 4 program. In the [[http://www.itu.dk/people/carsten/courses/opi-F08/project/project.pdf project description]] you find three homework problems, that you are expected to hand in along with the regular homeworks. See schedule below. The player interface is available from [[http://www.itu.dk/people/carsten/courses/opi-F08/project/java/connect4code.tgz here]] (or [[http://www.itu.dk/people/poswolsky/OPI-E07/Player.java Player.java]] )For simplicity, this version of the referee does not take time. The code for the - [[http://www.itu.dk/people/carsten/courses/opi-E07/project/java/Nim.java NIM game]] that we discussed in class is also available. + [[http://www.itu.dk/people/carsten/courses/opi-F08/project/java/Nim.java NIM game]] that we discussed in class is also available. - Important: We have changed the time limit pro move to 18 seconds... - Here's the version of the referee that we will be using. [[http://www.itu.dk/people/carsten/courses/opi-E07/project/java/ref.java ref.java]]. + Here's the version of the referee that we will be using. [[http://www.itu.dk/people/carsten/courses/opi-F08/project/java/ref.java ref.java]]. - --- Groups --- + The winner of the Connect 4 competition is Anders Risum who defeated Kristoffer Mads in an exciting final round. - + - # BoGThomsenPlayer, XiangGe (Bo) + - # MaiSun, PeterRaahauge (MaiSun) + - # NaderSalas,EsbenBirkebaekLarsen (Espen) + - # Marguerite, ChristianFoli (Christian) + - # SemBlaksmark, LawrenceJohnson (Lawrence) + - # Dajana, JanusBrunkOlsen (Janus) + - # MagnusKoch, KimOlsen (Magnus) + - # Garry, Jesper (Gary) + - + - --- Quarter Final --- + - # Bo, MaiSun (MaiSun) + - # Espen, Christian (Christian) + - # Lawrence, Janus (Janus) + - # Magnus, Garry (Garry) + - + - + - --- Semi Final --- + - # MaiSun, Christian (MaiSun) + - # Janus, Garry (Garry) + - + - + - --- Final --- + - # MaiSun, Garry (tie) + - + - + - Congratulations MaiSun and Garry. If you are interested, the code of all of the participants is now + - [[http://www.itu.dk/people/carsten/courses/opi-E07/tournament.tgz online]]. + - + - + - + - + - + - + === Newsgroup === === Newsgroup === Line 245: Line 209: All pages including the title page should be stabled together. All pages including the title page should be stabled together. The assignment will be evaluated as either pass or fail. If it fails, you can revise it and hand it in again within one week. The assignment will be evaluated as either pass or fail. If it fails, you can revise it and hand it in again within one week. + Tentative Plan:
-
• 1. Hand-in on Monday Sep. 10 at 13:30: P2.3 +
• 1. Hand-in on Monday Feb. 11 at 13:30: P2.3 -
• 2. Hand-in on Monday Sep. 17 at 13:30: P3.6, P4.11 +
• 2. Hand-in on Monday Feb. 18 at 13:30: P3.6, P4.11 -
• 3. Hand-in on Monday Sep. 24 at 13:30: P5.9, P6.4 +
• 3. Hand-in on Monday Feb. 25 at 13:30: P5.9, P6.4 -
• 4. Hand-in on Monday Oct. 01 at 13:30: R7.3, P7.3 +
• 4. Hand-in on Monday Mar. 03 at 13:30: R7.3, P7.3 -
• 5. Hand-in on Monday Oct. 08 at 13:30: P13.4, P14.13 +
• 5. Hand-in on Monday Mar. 10 at 13:30: P13.4, P14.13 -
• 6. Hand-in on Monday Oct. 22 at 13:30: R15.5, P15.2 +
• 6. Hand-in on Monday Mar. 17 at 13:30: R15.5, P15.2 -
• 7. Hand-in on Monday Oct. 29 at 13:30: R17.9, P17.3 +
• 7. Hand-in on Monday Mar. 31 at 13:30: R17.9, P17.3 -
• 8. Hand-in on Monday Nov. 5 at 13:30: R8.19, P8.8 +
• 8. Hand-in on Monday Apr. 07 at 13:30: R8.19, P8.8 -
• 9. Hand-in on Monday Nov. 12 at 13:30: R9.13, P9.16 +
• 9. Hand-in on Monday Apr. 14 at 13:30: R9.13, P9.16 -
• 10. Hand-in on Monday Nov. 19 at 13:30: R10.4, P10.4 +
• 10. Hand-in on Monday Apr. 21 at 13:30: R10.4, P10.4, Part 1 of Connect 4 -
• 11. Hand-in on Monday Nov. 26 at 13:30: R11.15, P18.9 +
• 11. Hand-in on Monday Apr. 28 at 13:30: R11.15, P18.9 -
• 12. Hand-in on Monday Dec. 03 at 13:30: R20.8, P20.1 +
• 12. Hand-in on Monday May. 05 at 13:30: R20.8, P20.1, Part 2 of Connect 4 -
• 13. Hand-in on Monday Dec. 10 at 13:30: Part 1 of Connect 4 +
• 13. Hand-in on Monday May. 19 at 13:30: Part 3 of Connect 4 -
• 14. Hand-in on Monday Dec. 17 at 13:30: Part 2 of Connect 4 +
Line 274: Line 238:
• [[http://www.itu.dk/people/carsten/ Carsten Schürmann]] (CS)
• [[http://www.itu.dk/people/carsten/ Carsten Schürmann]] (CS)
• [[http://www.itu.dk/people/birkedal/ Lars Birkedal]] (LB)
• [[http://www.itu.dk/people/birkedal/ Lars Birkedal]] (LB) -
• [[http://www.itu.dk/people/poswolsky/ Adam Poswolsky]] (AP) +
• [[http://www.itu.dk/people/thamsborg/ Jacob Thamsborg]] (JT)
• [[http://www.itu.dk/~sarnat/ Jeff Sarnat]] (JS)
• [[http://www.itu.dk/~sarnat/ Jeff Sarnat]] (JS)

## Contents

### Object-oriented Programming, Introduction (OPI), Spring 2008

This is the course page for Object-Oriented Programming, Introduction.

### Practical and administrative matters

• Newsgroup: see below.
• NOTE: first week (Mon 28 Jan + Wed 30 Jan) lectures are 16:00 - 18:00 and three are no labs. Mon 28 Jan and Wed 30 Jan we are in Aud. 4.
• Lectures: Monday 13:30-15:30 (Aud 4), Wednesday 13:30-15:30 (Aud. 4).
• Exercise labs: Monday 16-18(Rooms 4A56 + 4A58), Wednesday 16:00-18:30 (Rooms 4A56 + 4A58).
• The course period is 16 weeks half time (15 ects). The course will consist of approximately 12 weeks of lectures and four weeks project work.
• 12 out of 15 mandatory exercises must be handed and passed satisfactorily to attend the exam. The project work counts for 4 mandatory exercises (so you must hand in the project work to attend the exam). You are allowed to work in groups to solve the excercises, but each individual student must write his/her solution up individually and hand it in by him/herself.
• Students are expected to attend the lectures and make use of the labs.
• Exam: 4 hours written exam, paper and pencil, date 2008-06-02.
• Last years exam can be found [here]

### Topics and tentative plan

• Below is a tentative plan.

Week Date Teacher Topic Materials Labs
35 Mon 28 Jan LB Intro + Blue J ch. 1

[slides] [HelloPrinter.java]

No labs
35 Wed 30 Jan JT Using Objects ch. 2 (- 2.8, 2.11, 2.12, 2.13)

[slides] [examples]

No labs
36 Mon 04 Feb JT Impl. Classes ch. 3 (- 3.6, 3.9)

[slides] [examples]

Exercises: P1.1, P1.5, P1.6, R2.3, R2.5, P2.3, P2.4, P2.10
36 Wed 06 Feb JT Data Types ch. 4

[slides], [examples]

Exercises: R3.5, R3.6, R3.8, P3.1, P3.2, P3.3, P3.4, P3.6, P3.11
37 Mon 11 Feb JT Decisions ch. 5 (- 5.5)

[slides], [examples]

Exercises: R4.4, R4.6, R4.8, P4.1, P4.4, P4.6, P4.11, P4.14, R4.9, R4.11, R4.16, R4.13,
37 Wed 13 Feb JT Iteration ch. 6 (- 6.6, 6.7)

[slides], [examples]

Exercises: P5.2, P5.3, P5.8, P5.9, R5.1, R5.6, R5.8, R5.13,
38 Mon 18 Feb JT Array and Array Lists ch. 7 (- 7.8)

[slides], [examples]

Exercises: R6.2, R6.3, R6.5, P6.2, P6.4, P6.5, P6.7, P6.8
38 Wed 20 Feb JT Object references, the main method, comments and documentation comments. QUIZ with spectacular prize! 2.10, 1.6, 3.3 Exercises: catch up with earlier exercises
39 Mon 25 Feb LB Recursion ch. 13

[slides], [examples]

Exercises: R7.1, R7.2, R7.3, R7.4, R7.11, R7.17, P7.1, P7.2, P7.3, P7.4, P7.5, P7.6
39 Wed 27 Feb LB Sorting ch. 14: 14.1 - 14.5

[slides],

Exercises: R13.2, R13.4, R13.8, P13.1, P13.4, P13.6, P13.7, P13.13
40 Mon 03 Mar LB Searching ch. 14: 14.6 - 14:8

[slides] [examples]

Exercises: P14.1, P14.3, P14.4, P14.12, P14.13, P14.14
40 Wed 05 Mar LB Data Structures Intro ch. 15

[slides] [examples]

Exercises: continue with the earlier ones
41 Mon 10 Mar LB Generics ch. 17 (- advanced topic 17.1)

[slides] [examples]

Exercises: R15.1, R15.2, R15.3, R15.4, R15.5, R15.8, P15.2, P15.4, P15.5, P15.11, P15.14
41 Wed 12 Mar LB Review Exercises: continue with the earlier ones
43 Mon 17 Mar LB Designing Classes ch. 8 (- 8.10)

[slides] [examples]

Exercises: R17.1, R17.2, R17.3, P17.1, P17.2, P17.3, P17.7, P17.8
43 Wed 26 Mar LB Interfaces ch. 9 (- 9.5)

[slides] [examples]

Exercises: R8.1, R8.4, R8.19, P8.1, P8.2, P8.3, P8.5, P8.8, P8.11
44 Mon 31 Mar JS Inner Classes ch. 9 (9.6)

[slides] [examples]

Exercises: R9.3, P9.5, P9.6, P9.7
44 Wed 02 Apr CS Inheritance ch. 10 (- 10.9, 10.10, 10.11)

[slides] [examples] [super.super]

Exercises: R9.13, R9.18, P9.13, P9.16
45 Mon 07 Apr CS Exceptions ch. 11

[slides] [examples]

Exercises: R10.3, R10.4, R10.8, P10.4, P10.5
45 Wed 09 Apr CS Graphics 2.11, 2.12, 2.13, 3.9, 9.6-9.10, 10.9-10.11 Exercises: R11.8, R11.15, R11.19, P11.4, P11.7, P11.11
46 Mon 14 Apr JS Object-Oriented Design ch. 12

[slides] [examples]

Exercises: R2.11, P2.13, P3.18, R9.22*(optional), P9.21, R10.18, P10.16, P10.17
46 Wed 16 Apr JS Threads ch. 20 Exercises: catch up
47 Mon 21 Apr CS Graphics ch. 18

[slides] [examples]

Exercises: R18.3, R18.14, P18.1, P18.3, P18.7, P18.9
47 Wed 23 Apr CS Reflection

[tutorial] [slides] [examples]

Exercises: R20.2, R 20.8, P20.1, P20.4, P20.7
48 Mon 26 Apr CS Connect 4 see below Project
49 Wed 30 Apr CS Connect 4 see below Project
49 Mon 05 May Cs Connect 4 see below Project
49 Wed 14 May CS Connect 4 see below Project
49 Mon 19 May CS Connect 4, Design by contract see below Project

### Project

The project is about implementing a Connect 4 program. In the [project description] you find three homework problems, that you are expected to hand in along with the regular homeworks. See schedule below. The player interface is available from [here] (or [Player.java] )For simplicity, this version of the referee does not take time. The code for the [NIM game] that we discussed in class is also available.

Here's the version of the referee that we will be using. [ref.java].

The winner of the Connect 4 competition is Anders Risum who defeated Kristoffer Mads in an exciting final round.

### Newsgroup

There is a newsgroup for this course, where students can post and answer questions to each other. The teaching assistent will also read and answer questions once or twice every week. You can subscribe via your email program (for example Mozilla Mail), there is a folder called news.itu.dk, and the newsgroup is called it-c.courses.SOPI.

### Literature and materials

• Cay Horstmann: Big Java, 3rd Ed., Wiley

### Exercise Labs

At the exercise labs you should work on solving problems from the course material and ask questions to the teaching assistant.

### Mandatory Assignments

Mandatory assignments are posted on this home page in week n. You should work on the assignments in week n+1 and hand in the assignment by 13:30 in the pidgeon hole outside wing 1C on Monday in week n+2. Assignments are handed in on paper. You don't have to typeset your answers, but you should have tested all the code you submit. The hand-in should contain: a title page with the name of the course, and your name and a “report” with comments to your solution and program code. All pages including the title page should be stabled together. The assignment will be evaluated as either pass or fail. If it fails, you can revise it and hand it in again within one week. Tentative Plan:

• 1. Hand-in on Monday Feb. 11 at 13:30: P2.3
• 2. Hand-in on Monday Feb. 18 at 13:30: P3.6, P4.11
• 3. Hand-in on Monday Feb. 25 at 13:30: P5.9, P6.4
• 4. Hand-in on Monday Mar. 03 at 13:30: R7.3, P7.3
• 5. Hand-in on Monday Mar. 10 at 13:30: P13.4, P14.13
• 6. Hand-in on Monday Mar. 17 at 13:30: R15.5, P15.2
• 7. Hand-in on Monday Mar. 31 at 13:30: R17.9, P17.3
• 8. Hand-in on Monday Apr. 07 at 13:30: R8.19, P8.8
• 9. Hand-in on Monday Apr. 14 at 13:30: R9.13, P9.16
• 10. Hand-in on Monday Apr. 21 at 13:30: R10.4, P10.4, Part 1 of Connect 4
• 11. Hand-in on Monday Apr. 28 at 13:30: R11.15, P18.9
• 12. Hand-in on Monday May. 05 at 13:30: R20.8, P20.1, Part 2 of Connect 4
• 13. Hand-in on Monday May. 19 at 13:30: Part 3 of Connect 4

### Teaching Assistant

• Lilian Juma (lilian.juma@yahoo.com)