iLearn

This lecture is all about learning the foundations of programming. It covers the foundations of imperative and object oriented programming. It teaches you how to write computer programs that interact with the user, process data, and report information textually and graphically. It prepares you for later classes in that it enables you to translate abstract algorithms into running programs, and in that it makes you versatile in programming in the small on which you can build for creating larger projects.

### Homework Assignments

You won't get better at programming until you actually sit down and do it. That's why each week we post a number of homework assignments you are expected to solve. The assignments can be accessed through the lecture's iLearn site. To solve them, you will use the Java programming language. We choose Java for pragmatic reasons, in particular its wide usage in academia and industry. However, one should keep in mind that Java for us is merely a tool to teach fundamental principles that apply to most programming languages. To find out if your solution works, submit it via the iLearn system. This will usually cause a set of tests to be run on your solution, and iLearn will show you the test results once they have finished.

You are encouraged to help each other for solving the assignments. However, you must submit your own code. Copying/adopting somebody else’s code or parts thereof is plagiarism and may result in not admitting you to the final exam. We run plagiarism detection software across all submissions.

### Programming in Java

To start programming in Java, you need access to a computer that has Java installed. An application that helps you write Java programs (called an Integrated Development Environment, or IDE) is also helpful. We have a simple guide to help you get set up.

#### But I Already Know Java!

For those of you who have already programmed in Java, we're pretty sure we have enough to keep you busy and interested as well:

1. Most homework assignments will include an optional assignment that will be challenging even for advanced students.
2. During practical classes, you can ask for additional problems to work on. We will try to choose problems that will teach you details about Java that you probably didn't consider before.
3. You may also consider preparing for/participating in the ACM International Collegiate Programming Contest (ICPC), see also the site for the German Collegiate Programming Contest. If you are interested this, feel free to look for peers e.g. in the Forum (see below) and/or to set up a "programming club" that lets you practice together. If you need support in this, like finding a room for regular meetings, feel free to contact the Prof.
4. Finally, many of your peers don't know Java yet. Take the opportunity and help them with whatever Java problems they have. Don't solve their homework assignments for them, however; you wouldn't be helping them in the long run if you did.

Above all: Always keep in mind that we all started out not knowing anything about this whole programming business. So don't laugh at beginners, but instead help set them on the best path to becoming capable programmers.

### Literature

Our main source is The Art and Science of Java by Eric S. Roberts (Stanford University). An early draft of the book is available online. You can buy a slightly revised edition of the book online, but we don't require you to do so.

During the semester, we may provide provide additional material to update and expand on the book.

Another handy and quite in-depth (German) Java reference is Java ist auch eine Insel by Christian Ullenboom. This book, too, is freely accessible online.

We also recommend Oracle's tutorial. Finally, if you really want to find out the nitty gritty, we recommend the Java Language Standard as the definitive reference.

### Lecture Slides

Over the course of the semester, we'll post links to the lecture slides here. Grateful acknowledgement: the slides are extended versions of the original slides provided by the author of our text book, Eric S. Roberts, reposted here with kind permission. Typically, the slides without numbers are not shown during the lecture, but are delivered orally.

1. Lecture 1: Introduction (Chapter 1) pdf, pptx
2. Lecture 2: Programming by example (Chapter 2) pdf, pptx
3. Lecture 3: Expressions, Context-Free Grammars (Chapter 3) pdf, pptx
4. Lecture 4: Statement Forms (Chapter 4) pdf, pptx
5. Lecture 5: "Guide to Success" + Methods (Chapter 5) pdf, pptx
6. Lecture 6: Objects and Classes (Chapter 6) pdf, pptx (Tortoise sample class, Wubbel class which uses Tortoise)
7. Lecture 7: Arrays and ArrayLists (Chapter 11) pdf, pptx
8. Lecture 8: Objects and Memory (Chapter 7) pdf, pptx
9. Lecture 9: Strings and Characters (Chapter 8) pdf, pptx
10. Lecture 10: Detecting Bugs, Object-Oriented Graphics (Chapter 9) pdf, pptx
11. Lecture 11: Files, Exception handling (Chapter 12.4) pdf, pptx
12. Lecture 12: Collection Classes (Chapter 13) pdf, pptx
13. Lecture 13: Event-driven Programs (Chapter 10) pdf, pptx
14. Lecture 14: Wrap-Up - MVC, Concurrency (Chapter 14) pdf, pptx
15. Lecture 15: Going Beyond the ACM Library pdf, pptx

Other universities also offer courses based on the book by Eric Roberts. In particular Stanford University, where Roberts teaches Computer Science, uses the book in its CS106a class Programming Methodology. There are on-line videos of an earlier edition of this class. Note that we post that link here only to offer you additional ways of explaining the material. For the exam at the end of our course, the important thing is what happened in our lecture, not in the one we linked to.

#### Code used in book and lectures

The code for each book chapter can be found here. The complete HousePoints code that illustrates the MVC pattern (Lecture 14) is here. The Timer class (Lecture 14) is here.

Here is the midterm test, along with our sample solutions. If you haven't taken the test during the recitation class, we recommend trying to work through the test yourself before looking at the answers.

#### Preparing for the Final Exam

Apart from the obvious (work through programming assignments, attend class and recitations and pay attention, team up with a study buddy), we want to point you to the Review Questions at the end of each book chapter. We highly recommend that you work through these Review Questions after the material has been covered in class. You can compare your answers also with answers provided here. It is likely that some of these questions will also occur in the final exam. For further advice, see also the "Guide to Success" discussed in class (Lecture 5, see Lecture Slides).

#### Mentoring System

The Department offers a mentoring system for beginning students. You can sign up for it during the first week of class, and we encourage you to do so. Further information is found here.

#### Forum

We have installed a Programming Course forum. Use it to discuss anything course-related. Get to know your peers, ask questions on homework assignments, etc. We will be monitoring the forum, too, and try to answer questions you may have. However, don't post solutions to homework assignments (neither in the forum, nor anywhere else). Finished solutions don't help anyone in the long run.

Note: You have to separately sign up for the forum. To do so, use one of your *.uni-kiel.de e-mail adresses. The forum won't accept other adresses.

## Organizational Details

Sign up for our course on StudiDB. You will find a single group you can sign up to: Globalübung. Every student is required to sign up for that. This registration is what we will be using to create the account you will be working with.

You will also need to sign up for a practical class here in the iLearn system, as discussed in the Recitation Class and described below.

### Recitation Class (Globalübung)

In addition to regular lectures, we offer a recitation class where we discuss solutions to homework assignments. The idea is to give you another opportunity to learn how a more experienced programmer would go about solving the assignments. The recitation class is offered each Wednesday from 2:15pm to 3:45pm in the Norbert-Gansel-Hörsaal, Olshausenstraße 40, until February 10th. We will also offer the recitation class during the project.

Note: In the UnivIS system, the recitation class is part of the ÜInf-Prog entry (080032).

### Practical Classes (Rechnerübungen), Mini Exams

Attending practical classes is also necessary to be allowed to take the exam at the end of the semester. The head teaching assistant will come to you in more or less regular intervals to take a look at your homework solutions ("mini exam"). If you can explain your solution to his or her satisfaction, you will receive a signature to certify that you passed the mini exam. By the end of the semester, you need to have collected a certain number of signatures to be allowed to take the exam.

Note: In the UnivIS system, the practical classes are part of the ÜInf-Prog entry (080032).

#### Registering in iLearn

Click on the "Registrieren" button on top of this page and fill out the form that appears. For "Benutzername", use the login of your university account (e.g., "stu123456") For your E-Mail address, please use your university address (e.g., "stu123456@mail.uni-kiel.de") Important: Click on "Ich bin ein Student" and fill out the required information.

#### Signing up for a practical class

Once you have registered yourself in iLearn (see above), fill out this form and rank the different practical classes according to how well they fit into your schedule. Do this until Thursday, October 29th, noon! We will then take your data and calculate an assignment of students to practical classes that is as fair as possible. You will end up in a practical classes in iLearn by the end of the week. However, this requires you to register an iLearn account and submit the form by the aforementioned deadline!

### Project (Praktikum)

After the regular semester, there will be a two-week "project" from February 29th to March 11th in which you work in teams of two on a task that is larger than the regular weekly homework assignments. This requires a presence time of four hours per week in the aformentioned Grundausbildungspool. Your team will be assigned to one of 8 four-hour slots to work in the Grundausbildungspool (Hermann-Rodewald-Str. 3, Room 105), which you have to attend. The slots will have mentors available for you to ask questions. There will be two more four-hour slots that you can go to in addition, with less mentors or even none at all. The additional slots are Wednesday, 14:10 to 18:00, and Friday, 14:10 to 18:00. Keep in mind that the recitation class, which we encourage you to attend, is Wednesday from 14:15 to 15:45.

Note: In the UnivIS system, the practical classes are part of the PrakInf-Prog entry (080044).

#### Signing Up for the Project

Registration for the project is open until February 5th via this form. Each team must sign up exactly once using the exact e-mail adresses you are using in the iLearn system. If you don't have a partner yet, simply sign up on your own and we will find a partner for you.

### In UnivIS

In UnivIS, there is one individual entry for the Class (Vorlesung) and one individual entry for the Project (Praktikum). There is one combined entry for Recitation Class (Globalübung) and Practical Classes (Rechnerübungen); the first given time/place denotes the Recitation Class, the remaining entries denote the alternatives for the Practical Classes.

### First Exam

As mentioned above, to be allowed to take the exam you have to be present at the practical classes and the project (unless you have a medical "attest" or are excused by the Prof) and need to pass three mini exams during practical classes.

The final exam will take place 21 March 2016, 14:00 - 16:00 (you should be there at 13:45 at the latest). Afterwards: excursion to Kieler Brauerei. The room you will take your exam in depends on the first three letters of your last name:

Last Name Room
Abe - Fre Olshausenstraße 75, Room 1
Gei - Kör Olshausenstraße 75, Room 2
Kra - Rhe Olshausenstraße 75, Room 3 (Hans-Heinrich-Driftmann-Hörsaal)
Rie - Sch Olshausenstraße 75, Room 4
Sem - Zin Leibnizstraße 1, Klaus-Murmann-Hörsaal

Note that if your name starts with "von", as in "von Hanxleden", we consider the first three letters to be "von" (meaning that you will end up taking your exam in the Klaus-Murmann-Hörsaal).

#### Signing Up for the Exam

Registration in the StudiDB system will be open for your from February 8th to March 7th.

#### Getting the Exam Results

You can take a look at your results and check what you did wrong on Thursday, March 24th, in LMS2 Ü2. The time depends on which practical class you attended:

Practical Class Time Slot
Monday, 14:10 to 16:00 16:00
Monday, 16:10 to 18:00 16:15
Tuesday, 14:10 to 16:00 16:30
Tuesday, 16:10 to 18:00 16:45
Wednesday, 12:10 to 14:00 17:00
Wednesday, 16:10 to 18:00 17:15
Friday, 12:10 to 14:00 17:30
Friday, 14:10 to 16:00 17:45