News

  • Tuesday 18/04/2017: Re-re-exam Reviewing: 21/04, 13:00-14:00, room next to Student Office (4th floor, Jupiter building)
  • Friday 10/04/2017: Re-re-exam with solutions
  • Monday 20/02/2017: Presentation of re-re-assignments: 07/04 at 15:00 in Mållgan
  • Monday 20/02/2017: Deadline for re-re-assignments: 06/04, 23:55
  • Thursday 11/01/2017: Re-exam Reviewing: 20/01, 15:00-17:00, room next to Student Office (4th floor, Jupiter building)
  • Thursday 22/12/2016: Re-exam with solutions
  • Wednesday 30/11/2016: Presentation of re-assignments: 06/12 at 15:00 in Mållgan
  • Friday 11/11/2016: Exam Reviewing: 23/11, 10:00-12:00 and 13:00-15:00, room next to Student Office (4th floor, Jupiter building)
  • Friday 04/11/2016: Exam with solutions
  • Monday 24/10/2016: The final exam will be held this Thursday, 27/10, 14:00-18:00. Please check the exam board in Saga building to find out your exam room
  • Thursday 20/10/2016: Presentation Assignment 3
  • Wednesday 19/10/2016: Lectures are now over! There will be two more exercise sessions next week (see below) which you can use to present re-assignments and/or ask questions. Note that if you fail to do the presentation by next week, you can only resubmit and present either in December 2016 or in August 2017.
  • Wednesday 19/10/2016: Past exams with solutions can be found here
  • Tuesday 18/10/2016: Quizzes are now available on kahoot. Create your own account and search for “musard” on public kahoots
  • Thursday 13/10/2016: Updated requirement to get a VG on Assignment 3 (see below)
  • Sunday 09/10/2016: Assignment 3 has been posted
  • Friday 07/10/2016: A compilation of past exams can be found here
  • Thursday 06/10/2016: Presentation Assignment 2
  • Tuesday 27/09/2016: Frequently Asked Questions about Assignment 2
  • Monday 26/09/2016: This week (39) exercise sessions will be held as usual
  • Thursday 22/09/2016: Assignment 2 has been posted
  • Thursday 15/09/2016: Presentation Assignment 1
  • Monday 5/09/2016: Updated library dit948
  • Sunday 4/09/2016: Assignment 1 has been posted
  • Monday 29/08/2016: I/O library dit948 is now available
  • Monday 29/08/2016: Off we go into programming fun

Instructor and TAs

Course Instructor: Musard Balliu (musard@chalmers.se)

Teaching Assistants: Omar Abu Nabah, Sarah Aldelame, ABdulkader Bayrakdar, Ma Theresa Catalina Lirit, Sanja Colak, Linus Eiderström Swahn, Thomas Emilsson, Amanda Hoffström, Maria Chiara Lucatello, Monica-Alexandra Murgescu, Dennis Nielsen

Course Email: dit948.programming16@gmail.com. Instructor and TAs have access to this address. You should use it for any programming-related questions.

Course Content

Programming (or development or coding) is the act of realizing solutions to computing problem, i.e., programs, using a programming language. It involves the design, realisation, testing, troubleshooting, and maintenance of program code, in a programming language, on top of of some programming platform, by the help of a development environment. The course introduces the student to a contemporary object oriented programming language with associated platforms and environments, with emphasis on basic programming language concepts, object oriented concepts, and elementary data structures. It also introduces the student to the notion of code quality, and contemporary methods for obtaining high code quality. Learning proceeds by thematic problem solving sessions in which students solve open-ended problems using theories and methods introduced in the lectures and the course literature.

Learning Outcomes

After completing the course, the students should have a firm knowledge of

  • the basics of programming language concepts
  • the basics of object-oriented programming
  • using and understanding Application Programming Interfaces (APIs)
  • developing small software applications in Java using a modern development environment
  • formulating and implementing algorithms to solve elementary programming problems
  • assessing the comprehensibility of a program and adopting a professional attitude to software development

Examination and Grading

To pass the course, students must pass all assignments and the written exam.

Grading scale comprises: Pass with Distinction (VG), Pass (G) and Fail (U). To be awarded Pass (G) for the full course, students must pass both the exam part and the written assignments part with at least grade (G). To be awarded Pass with Distinction (VG) for the full course, students must, in addition, receive a VG on the exam part and at least 2 VGs on the assignments part.

Schedule

  • Lectures: Monday and Wednesday, 9:15-12:00. Lectures will be held in room Alfons on the 2nd floor in building Patricia

  • Supervision sessions: Monday 13:00-15:00, Wednesday 15:00-17:00, Thursday 15:00-17:00 in main supervision hall (Mållgan)

  • Exam: October 27

  • Re-exam: December 22

Assignments

During the course there will be 3 written assignments carried out in groups of 2 students. Assignments must be submitted via the GUL, otherwise they cannot be graded. Students are allowed to submit each assignment at most three times. Submission deadlines are strict and will be announced during the course.

  • Assignment 1 has been posted! It is due no later than September 14, 23:55. Presentations will take place on Thursday, September 15, during the supervision session.
  • Assignment 2 has been posted! Template files can be found here.
    It is due no later than October 5, 23:55. Presentations will take place on Thursday, October 6, during the supervision session. Additional information can be found here.
  • Assignment 3 has been posted! Template files can be found here. It is due no later than October 19, 23:55. Presentations will take place on Thursday, October 20, during the supervision session.
    Update: To get a VG on Assignment 3, it is enough to implement a GUI that displays a list of 20 random circuits, and the Generate button is no longer required. You are however encouraged to try out implementing the original version of the assignment.

  • Re-assignments: The deadlines for re-assignments are roughly the same as the dates for re-exams. There will be one session in December 2016 and another session in April 2017. Earlier presentations are possible (while the course is still running), and they have to be agreed with the instructor.

Exercises

Exercises to be solved during the supervision sessions will be published here.

  • Aug 29: Install and Eclipse JDK 1.7 (or later version) on your computer and make sure it compiles and runs the first Java program
  • Aug 31: Exercises (I/O and problem solving)
  • Sep 01: Exercises (Operations on strings)
  • Sep 05: Exercises (Conditionals and loops) Solutions
  • Sep 07: Exercises (Arrays and subroutines) Solutions
  • Sep 08: Work on Assignment 1
  • Sep 12: Exercises (Subroutines/methods) Solutions
  • Sep 14: Exercises (Methods)
  • Sep 15: Presentation Assignment 1
  • Sep 19: Exercises (Classes and Objects). Templates: Rectangle.java, RectangleMain.java, Date.java
  • Sep 21: Exercises (Classes and Objects)
  • Sep 22: Exercises from September 21 Solutions: Account.java, Atm.java
  • Sep 26: Work on Assignment 2
  • Sep 28: Exercises (Problem solving)
  • Sep 29: Finish with assignment and exercises
  • Oct 03: Exercises (Inheritance and polymorphism)
  • Oct 05: Finish the exercise from Oct 3
  • Oct 06: Presentation Assignment 2
  • Oct 10: Import becker.jar library from Eclipse (instructions here) and do all exercises from Lecture 9.
  • Oct 12: Programming exercises 2.12 and 2.13 from Becker’s book
  • Oct 13: Work on Assignment 3
  • Oct 17: Exercises form Lecture 10 and Lecture 11
  • Oct 19: Work on GUI for Assignment 3
  • Oct 20: Presentation Assignment 3
  • Oct 24: Presentation of all assignemnts and Q&A
  • Oct 26: Presentation of all assignemnts and Q&A

Lecture Slides

Lecture slides will be published here.

  • Aug 29: Welcome, course organization, computers and programs, a taste of Java (slides)
  • Aug 31: Basics: I/O, types, variables, expressions, assignments, blocks, scope (slides)
  • Sep 05: Basics: Conditionals, loops (slides)
  • Sep 07: Arrays, subroutines (slides)
  • Sep 12: Algorithms, problem solving (slides)
  • Sep 14: Object-oriented programming: classes, objects, methods (slides)
  • Sep 19: Object-oriented programming: classes, objects, methods (slides)
  • Sep 21: Object-oriented programming: modifiers, inheritance (slides)
  • Oct 03: Object-oriented programming: inheritance, polymorphism (slides)
  • Oct 05: Packages, interfaces, abstract classes (slides)
  • Oct 10: Introduction to APIs (slides)
  • Oct 12: GUIs (slides)
  • Oct 17: I/O streams and networking (slides)
  • Oct 19: Course recap and exam preparation (slides)

Literature

  • Daniel Liang, Introduction to Java Programming, Comprehensive 10/E, any edition from the seventh on.

  • Introduction to Programming Using Java, Seventh Edition by David J. Eck.

  • Java: Learning to Program with Robots,Course Technology 2007 by Byron W. Becker. The book is out of print, but is available here.

Useful links