What will you learn during the CSE programme?
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. Structure of the programme 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. Modules The Computer Science and Engineering degree programme consists of six modules: Mathematics Systems Models Software Data & AI Multimedia The first year The second year The third year 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 consists of a minor, electives and a Research Project. Courses and competences Introduction to 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 several 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 must be capable of solving complex problems. One important aspect is to be able to come to the right conclusions. Based on 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 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 Datastructures This course takes up where Introduction to 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 What happens when you open a website? How do you ensure that your online information is stored safely? This course is an introduction to the Web, and you will program in HTML, CSS and JavaScript. You are also introduced to databases, learning about their architecture and how you can interact with databases. 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. Collaborative Software Engineering Project During this project you will put the knowledge that you gained in the course Introduction to 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 and working in a team. 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 must 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 Introduction to 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 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. Courses and competences 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 In this course you will learn the basics of different Machine Learning algorithms. These algorithms are used in many AI applications. You will use Python to implement the theory. 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, Computability and Complexity The course Automata, Computability and Complexity 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 small team you will create a software solution for a societal relevant problem. You will work with an (external) client and deliver a working product as requested by the client. For the Software Project we work together with external companies that offer various projects. 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. 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 Tijdens je tweede jaar mag je kiezen uit een van de drie variantblokken. Deze variantblokken geven je de kans om meer kennis op te doen in een richting van de informatica die je zelf interessant vindt. 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 at TU Delft, such as Finance or Electrical Sustainable Energy Systems, or choose a minor at another university or study abroad. The degree programme finishes with the Research Project. This project is carried out individually at TU Delft or another university 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. Courses and competences Minor 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 choosing a minor at another university 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. More information about Minors