This Bachelor’s degree is a three-year programme with a mix of teaching methods, such as lectures, instruction, projects and self-study. Lectures take place between 8:45 and 17:30. A lecture consists of two 45 minute blocks, with a 15-minute break in between. The projects will help you to apply your knowledge in a group and experience the practical use of various subjects and how they interrelate. You will also practise your presentation and reporting skills.
The Computer Science and Engineering degree programme consists of six modules:
- Media & AI
You will learn how computers, networks and embedded systems work. You will study algorithms, addressing questions as: what is arithmetic, what can computers do and what can they not do, and how can you represent software mathematically? Of course, you will also work with concepts of various programming languages, study data structures, learn about software quality, how to model complex systems and how users interact with such systems. You will try to solve problems in a logical way.
In the first year you will have compulsory courses with theory and laboratory courses (projects). You will be taught programming, reasoning and logic, computer networks, data management and mathematics. The second year is built of 75 per cent compulsory courses and 25 per cent electives. And the third year is mainly a number of electives and a Research Project.
In the first year, you will have a compulsory combination of courses. A mix of lectures, tutorials and laboratory courses. During the projects, you will apply the acquired knowledge to existing problems. This could include designing an application to help illiterate people. You will also take part in a mentor group of ten to fifteen people. The mentor group meets every week for an hour during the first semester under the supervision of a faculty mentor and a student mentor who will help you with developing study skills and other study-related matters.
- Object Oriented Programming
This course consists of learning the basics of programming. You will already be programming your first ‘object’ in the programming language Java during the first week. You learn, for example, about data types, methods and testing. You also write a number of small software programmes. Previous knowledge of programming is not required.
- Reasoning and Logic
“All ICT students learn Reasoning and Logic. You are an ICT student. Conclusion: you learn Reason and Logic.”
As a computer scientist, you have to be capable of solving complex problems. One important aspect is to be able to come to the right conclusions. On the basis of theorems and partial observations you can acquire more knowledge and evidence to help prove that a specific conclusion is mathematically and logically correct. You learn how to do this with Reasoning and Logic.
- Computer Organisation
How does a computer perform calculations, and how does it remember data? This is what you learn in the course Computer Organisation. You investigate the architecture, structure and the components of a computer. Memory and processes are important elements.
Calculus is a branch of mathematics that concerns functions, series and equations, differentiation, integration and complex numbers. This knowledge is used, for example, for optimisation, the analysis of the duration of an algorithm and signal analysis. The knowledge from Mathematics B is repeated during the first week, and you will quickly expand your knowledge.
- Algorithms and Data Structures
This course takes up where Object-Oriented Programming and Reasoning and Logic left off. Now you have mastered the basics of programming, you will learn about the data structures that you can use to store information in a structured manner, such as lists and trees. You also concentrate on algorithms: the instructions needed to carry out a task, such as sorting or searching for information. You also learn that various solutions have their own pros and cons in terms of constraints in consumption of space and time. It is vital to use the right data structures and algorithms in order to be able to solve problems as efficiently as possible.
- Web and Database Technology
- Linear Algebra
We are often confronted with digital information that consists of numbers that can be represented structurally. An example of this is Computer Graphics, where points are expressed as coordinates in a 3-D space. In the mathematics course Linear Algebra you learn how to represent this kind of information in matrices and vectors, and how you can consequently work and compute with them effectively.
- Object-Oriented Programming Project
During this project you will put the knowledge that you gained in the course Object-Oriented Programming in practice. You will write a programme, in a group of five students. The assignment is different every year: for example, students have developed an application for people with illiteracy and a programme to help program blind people. This course teaches you the essential skills for the development of software, not only limited planning and documentation but also including presentation.
- Information and Data Management
Following on from the introduction in Web and Database Technology, your knowledge about databases will be further expanded in this course. You learn more about modelling, managing and retrieving data from a Database Management System. You also learn how to use universal resource identifiers, such as a URL to save and retrieve data.
- Probability Theory and Statistics
The mathematics course Probability and Statistics teaches you how to calculate probabilities and how to deal with divisions in your data. You learn, for example, how you can compute the variance (spread) of your data and why this is important. Statistics help you to form conclusions in your research. You can compute whether something is pure chance or if there is a significant link.
- Software Quality and Testing
How can you know for sure that your software will always perform as expected? How do you go about adding new functionality or adapting something? You have to ensure that your software is easy to maintain and will continue to function after updates have been made. This is why it is important that you know how to write good software and how to test it. In this course, the testing methods from Object-Oriented Programming are augmented with new information and skills.
- Computer Networks
The Internet would probably be the first thing that comes to mind when thinking about networks, as it is certainly a good example of a network. But what actually happens when you send an email to a fellow-student via a network? What does a secure connection imply, and what are the dangers of such a connection? The course Computer Networks teaches you about the various levels of communication within a network that combine to send data through the network. You will also monitor the applicability, reliability and performance of each level.
The second year is built on compulsory courses and electives. In the first semester, you may choose from three different blocks: Multimedia, Systems or Data. You will learn more about the use of multimedia data in areas as social media or how you can analyse large data files.
In the second semester you will work in a small team with fellow students on a large software project, developing software for an external stakeholder to tackle a socially relevant issue. Examples of such projects include programming a drone that can independently survey a commercial greenhouse or developing a scheduling application for a hospital.
- Computer Graphics
This course teaches you about the challenges and problems associated with the creation of Computer Graphics. You learn invaluable techniques, such as geometrical modelling and the conversion of models into images. You also use computer graphics techniques during a project in a group of six students. You work on a ray tracer. This is a technique that uses light in an image in such a way that the image appears to be more realistic. The knowledge of linear algebra that you have gained will be very useful here.
- Machine Learning
- Algorithm Design
Algorithm Design goes a step further than the Algorithms and Data Structures course. You learn, for example, about graphs (collections of points), dynamic algorithms and network optimisation. Each technique is assessed for efficiency, as a few lines of code can make the difference between a runtime of a week or a few seconds.
- Software Engineering Methods
Software Engineering Methods teaches you how to develop good quality software in a team setting. You learn how to translate the wishes of the client into programming goals, how you can use agile working methods to realise a larger product, how you can use design patterns to create software that can be easily maintained and improved, and how you can gauge and monitor the quality of the software that you have produced.
- Automata, Languages and Computability
The course Automata, Languages and Computability concentrates on how programming languages are recognised by computers and what types of problems are solved using computers. There is also attention for how you can determine the amount of time and memory that is required for different solutions.
- Concept of Programming Languages
Most of the underlying concepts of programming languages are very similar. This course teaches you the basic concepts on which many programming languages are based. Once you understand these concepts it will help you to understand and work with many different programming languages. This is important for the future, if you have to use different languages to the ones that you learned during your studies.
- Software Project
During the Software Project you will apply your knowledge of Software Engineering Methods in practice. In a group of five students you will create a suitable software solution for a socially relevant application in one of the following categories: Tools for Software Engineering, Virtual Humans for Serious Gaming, Health Informatics, Computer Games, Programming Life or Multimedia Services. During this project, you will not only learn how to be a better programmer, but also about how you should interact with a client (often from outside the university) and end-users. The experience gained here is invaluable as preparation for your Bachelor’s Thesis.
- Variant Block
During your second year, you can choose one of three variant blocks. These variant blocks give you the opportunity to learn more about a branch of ICT that interests you. The variant blocks are not a prerequisite for choices that you make after you finish the course: for example, you would not be required to take the Intelligent Data Analysis variant block prior to taking one of the big data subjects during a Master.
- Variant Block – Multimedia
The variant block Multimedia consists of the courses Signal Processing, Image Processing and Multimedia Analysis. This variant block teaches you how you can represent, process and analyse multimedia. For example, recognising songs from small audio fragments, recognising and reading number plates and speech recognition.
- Variant Block – Systems
The variant block Systems consists of the subjects Digital Systems, Embedded Software and Operating Systems. This variant block allows you to learn more about hardware as well as optimising software for hardware systems. During this project you will make a robot which navigates a maze with a smartphone camera.
- Variant Block – Data
The variant block Data consists of the courses Big Data Processing, Data Mining and Computational Intelligence. You will learn how a computer can deal with large quantities of data efficiently, how you can collect data intelligently and how you can extract useful patterns from the data.
In the first half of the third and final year of your Bachelor’s degree programme you will start with a minor. You can select one from existing minors, such as Finance or Electrical Sustainable Energy Systems, but you can also decide to assemble your own combination of courses, do an internship or study abroad.
The degree programme finishes with the Research Project. This project is carried out independently at TU Delft or at a company and involves research into a subject related to computer science. For example, this could involve implementing a new algorithm, and the necessary experimental tools to evaluate it against existing alternatives.
During your minor, you will have the opportunity to immerse yourself in a different area to ICT. This could be Hardware or Mathematics, or even Civil Engineering, Law or another field of expertise. You are free to choose your own minor and it does not have to be relevant to your ICT studies.
- Research Project
The very last project of your Bachelor. In the course of this project, everything that you have learned during the Bachelor will come together. In a group of two to four students, you will spend three months, full-time, on a project for a real client. The projects could be anything from a tool that answers spam with spam, to creating an educational game or a drone that uses image recognition to explore a greenhouse.
In the first semester of year 3 of the Bachelor’s degree programme, you will have the opportunity to spend six months broadening your horizons and exploring a subject that interests you, in the way that suits you best. Computer Science and Engineering students, for example, choose minors as Mathematical Finance or Robotica. Alternatively, you can broaden your perspective by opting for a cohesive course package, an internship or a course abroad. A well-chosen minor can help you to find the career options that suit you, or decide which Master’s programme you want to do after your Bachelor's degree programme.
Read more about Admission requirements
TU Delft employs the BSA system: the binding recommendation on the continuation of studies. This means that you must obtain at least 75 per cent of your credits (i.e. 45 of the 60 ECTS) in your first year in order to continue your programme. If you receive a negative binding recommendation on the continuation of studies, you will not be permitted to enroll in this programme again in the next 4 years.