Studiegids

nl en

Fundamentals of Programming

Vak
2026-2027

Admission requirements

There are no requirements to start this course. However; it is expected to successfully finish digital skills and introduction to programming (DSIP).

Description

This course teaches the fundamentals of programming concepts and how to apply these in the programming language Python. The overall course goal is to enable students to create conceptually solid and readable Python code without the need to resort to examples or AI programming aid. The course focuses on code fluency in Python and on programming concepts, including control flow and functions. It also teaches simple data structures such as strings, number formats, arrays, and lists. Finally, it introduces simple algorithmic concepts such as iteration and recursion, and touches upon the necessary computational thinking skills needed to design simple algorithms to solve problems. This course also covers basic errors, exceptions, and debugging. Lastly, this course continues teaching about coding standards and how to apply them.

Course objectives

1. Understand basic programming concepts\, including: Variables\, Instances\, Types\,  classes\, methods\, attributes\, scope and control Flow. This includes how they impact code design.
2. Understand basic algorithm design and data structures:

  • Remember and understand simple data structures, including sequences, sets, and matrices, and understand how to address these using keys and indices.

  • Understand iteration and recursion.

  • Explain choices in the design of simple algorithms.

3. Apply\, explain\, and reflect on basic programming concepts in Python

  • Of theoretical programming concepts (1) in Python.

  • Of basic algorithms and data structures (2) in Python.

  • Error handling and exceptions, and basic debugging strategies.

4. Apply code development skills:

  • Proper Python coding standards.

  • Available tools to program and run Python code (text editor, IDE, command line, Jupyter).

Schedule

In MyTimetable; you can find all course and programme schedules; allowing you to create your personal timetable. Activities for which you have enrolled via MyStudyMap will automatically appear in your timetable.

Additionally; you can easily link MyTimetable to a calendar app on your phone; and schedule changes will be automatically updated in your calendar. You can also choose to receive email notifications about schedule changes. You can enable notifications in Settings after logging in.

Questions? Watch the video; read the instructions; or contact the ISSC helpdesk.

Note: Joint Degree students from Leiden/Delft need to combine information from both the Leiden and Delft MyTimetables to see a complete schedule. This video explains how to do it.

Teaching method

  • Lectures: to teach the theoretical concepts of programming, programming on paper in pseudocode, and implementation in Python in the form of examples. Furthermore, we cover practical sessions for debugging and structuring code.

  • Labs: during labs, students hand in their assignments live (see below assessment). Furthermore, during lab hours students can ask clarifying questions about the lab assignments, exercises, and course material. It is highly expected from each student to attend 4 lab sessions per week, totalling 8 hours each week.

Assesment method

Assessment method

  • Assignments (60%): 6 individual lab assignments. The overall grade for assignments is the weighted average of the individual assignment grades. Each assignment needs to be handed in and orally examined during the lab sessions. All assignments need to have a passing grade to pass the course. Failure to do so without a valid reason results in failing the assignment.

  • One theoretical exam (40%): The exam focuses on understanding theoretical programming concepts and analyzing simple algorithms.

  • One Coding Final (pass/fail):  The coding exam is done on standalone computers without internet access or code generation assistance. The exam takes 4 hours, but is doable well within that time frame for a prepared student. The difficulty of the exam assignments does not surpass the lab assignments and the assignments are significantly smaller. Failing the final coding practical exam will result in failing the course.

  • One Coding Midterm (pass/fail): Similar to the final coding exam.  Passing the midterm will give a +1 bonus on the theoretical exam. Failing the midterm does not have any consequences.

Assignment Rules and Deadlines

  • Each assignment has three deadlines:

    • Before the first deadline, the code needs to be handed in and pass all mandatory tests.
    • Before the second deadline, the oral exam must be completed.
    • Third deadline (retake deadline).
  • Code can be handed in as many times as needed before the first deadline.

  • The oral exam can be retaken as many times as needed to pass it before the second deadline. After passing the oral exam, it can not be retaken.

  • Failing the first or the second deadline will result in capping the grade to a 6, and the assignment still needs to be completed before the third deadline.

Passing the Course

To pass the course, each assignment must be passed with a sufficient grade, the exam must be graded >=5 without the bonus of the midterm, AND the final coding exam must be a pass.

Resit, review & feedback

If a student fails the course in their first year (see passing the course), the student can not take part in the ADS course in semester 2. Instead, the student has to retake the FoP course in the second semester. This includes: labs, lectures, assignments, and retaking the practical coding exam, and if needed, the theoretical exam.

The retake for the coding final and exam is at the end of the second semester. This is also the regular retake option for higher-year students.

Assignment feedback and review is given during the oral exams. The theoretical exam review will be organized in person with one of the lecturers.

Reading list

No book, but lecture slides, referenced material, assignments, and a reader are required study materials.  To help study, there are optional quizzes and exercises (besides the mandatory assignments).

Registration

As a student; you are responsible for enrolling on time through MyStudyMap.

In this short video; you can see step-by-step how to enrol for courses in MyStudyMap.
Extensive information about the operation of MyStudyMap can be found here.

There are two enrolment periods per year:

  • Enrolment for the fall opens in July

  • Enrolment for the spring opens in December

See this page for more information about deadlines and enrolling for courses and exams.

Note:

  • It is mandatory to enrol for all activities of a course that you are going to follow.

  • Your enrolment is only complete when you submit your course planning in the ‘Ready for enrolment’ tab by clicking ‘Send’.

  • Not being enrolled for an exam/resit means that you are not allowed to participate in the exam/resit.

Contact

Education coordinator LIACS bachelors

Christos Athasnasiadis (c.athanasiadis@liacs.leidenuniv.nl)

Remarks

Software
Starting from the 2024/2025 academic year; the Faculty of Science will use the software distribution platform Academic Software. Through this platform; you can access the software needed for specific courses in your studies. For some software; your laptop must meet certain system requirements; which will be specified with the software. It is important to install the software before the start of the course. More information about the laptop requirements can be found on the student website.

AI Usage

(AI-based) code generation or completion is not allowed in this course. You may use AI as a search engine. This means that questions like: “How to make a list in Python?” are allowed, but any question like “solve ..”, “write .. “, “code .. “, etc. are not allowed.