The name of this course has changed in 2023. Before this, the course was called Ohjelmistotekniikka.

During this course, you will get to familiarise yourself with the principles behind software development, and apply them to implement a practical project in Python.

During the first three weeks, there will be a few tasks to do either by yourself or in the exercise sessions. In week 2, you will start working on the main bulk of the course, which is the practical work. You will advance the project week-by-week, following the schedule for the course.

The course will be graded primarily through the points you get from the practical work. Part of the points will be accumulated every week following the goals in the schedule, while the rest will be given for the final submission. If you have previously implemented relatively large software projects, it may be possible to perform a credit transfer and complete the course that way.

There is no exam for this course. You must do the practical work within the timeframe of this course. You will not be able to continue working on your project during the next course (autumn 2024), so remember to reserve enough time each week (10-15h per week) for the whole period!

You can find more detailed instructions for the practical work here. You can find the course material here.

Typos

If you notice issues or typos with the tasks or other written material, log into GitHub and follow these instructions

Timely information

  • Introductory lecture: Monday 11.3. at 10.15 - 11.45
    • The slides can be found here
    • The recording is here
  • There is a Discord channel available, where you can discuss the course and get help with your project
    • If you ask a question about the code you’ve written, include a link to your repository. It is almost impossible to help without seeing the code
    • NOTE: any inappropriate, judgemental, or discriminatory speech is forbidden. Those who break the rules will be banned from the channel.
  • If you need help with the course, come to the workshop sessions:
    • Mondays 14-16 on campus in the BK107 class
    • Tuesdays 10-12 on campus in the BK107 class
    • Wednesdays 16-18 on campus in the BK107 class
    • Fridays 10-12 on campus in the BK107 class
    • there is guidance between 11.3. - 3.5., but not during 28.3.-2.4. due to Easter holidays
    • There is also online guidance available. You can book a time for it in Moodle. Note that you can get better help in the workshop sessions!

Making sure the project works as intended

  • You must use Python version >= 3.8
  • There are differences in how different computers work, and it is not enough that your code works on your machine.
  • Your practical work must work, run, and be testable on the university’s Cubbli Linux (fresher’s laptop) machines. Otherwise, you will not get the points from the practical work.
  • If you do not have a fresher’s laptop, you can also use a remote desktop connection. In this case, choose Cubbli Linux.

Schedule

Week 1

Deadline Tuesday 26.3. at 23:59

  • The introductory lecture. You can find the slides here, and the recording here
  • Tasks: Command line and Git practice (1p)
  • You will return the tasks by making a GitHub repository and registering it in Labtool

Week 2

Deadline Tuesday 19.3. at 23:59

  • Practical work and tasks: Preliminary specification document, tests and unit tests (3p)
  • Beginning to develop practical work

Week 3

Deadline Tuesday 9.4. at 23:59

Week 4

Deadline Tuesday 16.4. at 23:59

  • Practical work (3p)
    • Basic functionality
    • Basic tests
    • Preliminary structure drawn as a class diagram
    • Pylint in use

Week 5

Deadline Tuesday 23.4. at 23:59

  • Practical work (3p)
    • Release 1
    • More test coverage
    • A sequence diagram that covers some basic flow

Week 6

Deadline Tuesday 30.4. at 23:59

  • Practical work (3p)
    • Release 2
    • More test coverage
    • Some docstring documentation
    • Preliminary architecture document
  • Code review (2p)

Week 7

Final deadline Sunday 12.5. at 23:59