Software Fundamentals

This is the homepage for the software fundamentals course. You can find all course information here.

This course is part of the CESE masters programme. This course's curriculum will be continued by the course Software Systems and the Embedded Systems Lab

It is possible to use the course material in your own time. For example, if you are already following hardware fundamentals, but would still like to learn Rust. In that case, we recommend you enroll in weblab. The assignments are freely available and should guide you though the basics of Rust. The lectures are also available in writing on the lecture notes page

Deadlines

PartGradeddeadline always at 23.59
Assignments on GitPASS/FAILsunday, week 1 (8 sept)
Individual assignmentsunday, week 4 (29 sept)
NES Projectwednesday, week 10 (6 nov)

This course consists of two parts over 9 weeks. You can find a detailed overview of what we will cover each week here

In the first part, the first 4 weeks, you will be working mostly on your own. There will be two lab sessions a week, 4 hours each, in which you can ask the TAs and your peers questions. On WebLab, there are practice assignments

In most lab sessions, we will spend 1 of these 4 hours (split into 2 smaller groups) discussing assignments together, looking at real-world examples of code. The assignments we will discuss could be based on your requests! Talk to the TAs if you have ideas.

In the first week, there will be a mandatory pass/fail assignment (meaning you can't continue the course if you don't do this) to demonstrate that you know Git. If you participate in first Lab, on Tuesday the 3rd of september, you automatically pass this. In the other three weeks, you will be working on an individual assignment in which you show your programming skills. The WebLab assignments can help you with this, and we strongly recommend you do them.

In the second half of the course there is a project. The project description is already published. You can only take part in this project if you have received a minimum grade of a 5 for the individual assignment, and when you have passed the Git assignment.

Note that you need a minimum grade of a 5.0 for the individual assignment to take part in the project and to pass the course.

The project will have a deadline in the halfway during week 10, and at the end of week 9 we will ask you to fill in a buddycheck questionnaire evaluating your team's performance in the project. These are mandatory.

During the project you are expected to work together with your group during the labs. Once a week, during the labs you will have a meeting with a TA assigned to your group to discuss your progress.

Minimum grades

The individual assignment decides your grade for part 1 of the course. The grade for needs to be at least a 5.0 to take part in the second half of the course (project).

Note however there is also a Git assignment, this assignment is mandatory to start the group project, even though you won't get a grade between 0 and 10 for it. It is simply pass or fail. During the group project, you will collaborate using git, and it's expected that you all know the basics by then.

Note that you need a minimum grade of a 5.0 for the project and individual assignment to pass this course.

Fraud and ChatGPT

Fraud (as well as aiding to fraud) is a serious offense and will always lead to (1) being expelled from the course and (2) being reported to the EEMCS Examination Board.

Fraud is taken to mean any act or omission by a student that makes it fully or partially impossible to properly assess the knowledge, insight and skill of that student or another student.

As part of an active anti-fraud policy, all code must be submitted, and will be subject to extensive cross-referencing in order to hunt down fraud cases. It is NOT allowed to reuse ANY computer code or report text from anyone else, including ChatGPT, Github Co-Pilot or similar, nor to make code or text available to any other student attending CESE4000 (aiding to fraud). An obvious exception is the code that was given to you by the course.

an excuse that one “didn’t fully understand the rules and regulations on student fraud and plagiarism at the Delft Faculty of EEMCS” will be interpreted as an insult to the intelligence of the course instructor and is NOT acceptable. In case of doubt one is advised to first send a query to the course instructor before acting.

If you're in doubt, read the TU's guidelines on AI Tools, and make sure that we can properly assess your knowledge and insight.

Lecture notes

Each lecture will have an associated document with an explanation of what is discussed in the slides. This document will be published under lecture notes. We call these the lecture notes. You can use these to study ahead (before the lecture) which we recommend, so you can ask more specific questions in the lectures. And we do invite you to ask lots of questions! but in the case you could not make it to a lecture, it should also give you a lot of the information covered in the lectures in writing.

We encourage you to use the arrows at the sides of the webpage, to read through the pages of the website in-order, also following the lecture notes in that order. A summary/index of the lecture notes can be found here.

if you are learning rust but are not following the course for credits which some of you are, you can use the lecture notes to help you make the assignments.

All lecture slides are also published here

If you notice any mistakes in this website, feel free to contact anyone on the course team. You can find our contact details on the staff page