Wat ga ik leren?
Je leert hoe computers, netwerken en embedded systems werken. Je buigt je over algoritmiek: wat is rekenen, wat zijn de mogelijkheden en onmogelijkheden van computers en hoe beschrijf je machines op een wiskundige manier? Uiteraard leer je op welke beginselen programmeertalen zijn gebaseerd, verdiep je je in datastructuren, softwarekwaliteit en leer je complexe systemen en de interactie van gebruikers met deze systemen te modelleren. Je lost op een systematische manier problemen op. Kunstmatige intelligentie, computer graphics, datamining en beeldverwerking staan ook op het programma.
Opbouw van de bachelor
Het eerste jaar bestaat uit verplichte vakken met theorie en practica (projecten). Je krijgt vakken op het gebied van programmeren, redeneren en logica, computernetwerken, data management en wiskunde. Het tweede jaar bestaat voor driekwart uit verplichte vakken en een kwart zijn keuzevakken. Het derde jaar bestaat voornamelijk uit keuzeruimte en een Research Project.
Leerlijnen
Het studieprogramma van Computer Science and Engineering bestaat uit zes leerlijnen:
- Mathematics
- Systems
- Models
- Software
- Data & AI
- Multimedia
In het eerste jaar volg je een verplicht vakkenpakket. Je krijgt een mix van hoorcolleges, werkgroepen en practica. Tijdens de projecten pas je de opgedane kennis toe op problemen uit de werkelijkheid. Je ontwerpt bijvoorbeeld een applicatie die laaggeletterden helpt leren lezen en schrijven. Daarnaast heb je een mentorgroepje van tien tot vijftien personen. In het eerste semester kom je met de mentorgroep wekelijks een uur bij elkaar onder begeleiding van een docentmentor en een studentmentor die je helpen met studievaardigheden en andere studiegerelateerde zaken.
Vakken en competenties
-
Bij dit vak leer je de basis van het programmeren. Gelijk in de eerste week programmeer je je eerste programma in de programmeertaal Java. Je leert onder andere over datatypes, methodes en testen. Ook schrijf je diverse kleine softwareprogramma’s. Voorkennis van programmeren is niet vereist.
-
“Alle informaticastudenten leren Redeneren en Logica. Jij bent een informaticastudent. Conclusie: jij leert redeneren en logica.”
Als informaticus moet je in staat zijn om complexe problemen op te lossen. Hierbij is het belangrijk om de juiste conclusies te trekken. Op grond van stellingen en gedeeltelijke waarnemingen kun je meer kennis afleiden en bewijzen dat een conclusie wiskundig en logisch correct is. Bij Reasoning and Logic leer je hoe je dit moet doen.
-
Hoe rekent een computer en hoe onthoudt een computer gegevens? Dit leer je tijdens het vak Computer Organisation. Je kijkt naar de architectuur, structuur en componenten van een computer. Denk hierbij aan geheugen en processoren.
-
Calculus is een wiskundevak dat gaat over functies, reeksen en rijen, differentiëren, integreren en complexe getallen. Deze kennis is nuttig voor bijvoorbeeld optimalisatie, het analyseren van de looptijd van een algoritme en het analyseren van signalen. De stof van wiskunde B wordt in de eerste week herhaald en al snel breid je deze kennis uit.
-
Dit vak sluit aan op Introduction to Programming en Reasoning and Logic. Nu je de basis van het programmeren onder de knie hebt, leer je over datastructuren waarin je informatie gestructureerd kunt opslaan, bijvoorbeeld lijsten en bomen. Daarnaast houd je je bezig met algoritmen: de instructies die nodig zijn om een taak uit te voeren, bijvoorbeeld informatie sorteren of zoeken. Hierbij leer je ook hoe verschillende oplossingen voor- en nadelen hebben in termen van ruimtegebruik en tijd. Het toepassen van de juiste datastructuren en algoritmen is belangrijk om problemen op een zo efficiënt mogelijke manier op te kunnen lossen.
-
Wat gebeurt er als je een website opent? Hoe zorg je ervoor dat jouw online informatie veilig wordt opgeslagen? Bij dit vak krijg je een introductie in het web en ga je programmeren in HTML, CSS en Javascript. Ook krijg je een introductie in databases waarbij je leert over de architectuur van databases en hoe je kunt communiceren met databases.
-
Vaak krijg je te maken met digitale informatie die bestaat uit getallen die gestructureerd kunnen worden gerepresenteerd. Denk hierbij bijvoorbeeld aan Computer Graphics, waarin punten als coördinaten in een 3D-ruimte kunnen worden uitgedrukt. Bij het wiskundevak Linear Algebra leer je hoe je dit soort informatie in matrices en vectoren kunt uitdrukken, en hoe je daar als gevolg optimaal mee kunt werken en rekenen.
-
Tijdens dit project ga je je opgedane kennis van het vak Introduction to Programming toepassen in de praktijk. Samen met vijf studenten ga je een programma schrijven. De opdracht is elk jaar anders, zo hebben studenten een app gemaakt voor mensen met laaggeletterdheid en een programma om blinde mensen te helpen programmeren. Binnen dit vak leer je vaardigheden die essentieel zijn voor het ontwikkelen van software, zoals plannen en documenteren en werken in een team.
-
Je kennis over databases wordt na de introductie in Web- and Database Technology in dit vak verder uitgebreid. Je leert meer over het modelleren, managen en ophalen van gegevens uit een Database Management System. Ook leer je hoe je universal resource indentifiers, zoals een URL, gebruikt om data op te slaan en op te vragen.
-
Bij het wiskundevak Probability and Statistics leer je hoe je kansen berekent en hoe je met verdelingen in je data omgaat. Je leert bijvoorbeeld hoe je de variantie (spreiding) van je data berekent en waarom dit belangrijk is. Statistiek helpt je bij het trekken van conclusies in onderzoeken. Je kunt dan meten of iets toeval is of dat er echt sprake is van een verband.
-
Hoe weet je zeker dat jouw software altijd doet wat je verwacht? Wat doe je als je nieuwe functionaliteiten wilt toevoegen of iets wilt aanpassen? Je moet ervoor zorgen dat je software goed te onderhouden is en bij aanpassingen nog steeds goed werkt. Daarvoor is het belangrijk dat je weet hoe je goede kwaliteit software schrijft en hoe je dit test. Bij dit vak worden de testtechnieken van het vak Introduction to Programming met nieuwe informatie en vaardigheden uitgebreid.
-
Bij netwerken denk je misschien gelijk aan het internet. Internet is inderdaad een van de voorbeelden van een netwerk. Maar wat gebeurt er eigenlijk wanneer je een mail stuurt naar een studiegenoot via een netwerk? Wat gebeurt en als je een versleutelde verbinding hebt en wat zijn de gevaren van zo’n verbinding? Bij het vak Computer Networks leer je over de verschillende lagen in communicatie over een netwerk, die er samen voor zorgen dat data over een netwerk verstuurd wordt. Daarbij wordt er per laag gekeken naar de toepasbaarheid, betrouwbaarheid en performance.
Het tweede jaar bestaat uit verplichte vakken en keuzeruimte. In het eerste semester kies je uit drie variantblokken: Multimedia, Systems of Data. Zo leer je meer over het gebruik van multimedia-data in bijvoorbeeld social media of leer je hoe je grote gegevensbestanden kunt analyseren.
In het tweede semester doe je een Software Project. Met een aantal medestudenten werk je aan een groot softwareproject, waarin je bij een bedrijf software bouwt om een maatschappelijk relevant probleem op te lossen. Voorbeelden van zulke projecten zijn het programmeren van een drone die zelfstandig een kas kan verkennen of het maken van een planningspapplicatie voor een ziekenhuis.
Vakken en competenties
-
Bij dit vak leer je over de uitdagingen en problemen bij het maken van Computer Graphics. Je leert belangrijke technieken, zoals geometrisch modelleren en het omzetten van modellen naar beeld (renderen). Ook pas je Computer Graphics technieken toe tijdens een project in een groep van zes studenten. Je werkt aan een ray tracer. Dit is een techniek waarbij licht in een afbeelding zodanig wordt gebruikt dat je afbeelding realistischer wordt. Hierbij komt je opgedane kennis van Linear Algebra zeer van pas.
-
In dit vak leer je de basis over verschillende Machine Learning algoritmes. Deze algoritmes worden gebruikt in veel AI applicaties. Je gaat in Python aan de slag om de theorie te implementeren.
-
Algorithm Design gaat verder op het vak Algorithms and Datastructures. Je leert onder andere meer over grafen (verzamelingen van punten), dynamische algoritmen en netwerkoptimalisatie. Alle technieken worden beoordeeld op hun efficiëntie, want een paar regels code kunnen het verschil maken tussen een runtime van een week of een paar seconden.
-
Bij Software Engineering Methods leer je hoe je kwaliteitssoftware ontwikkelt in teamverband. Je leert hoe je wensen van een externe klant in programma-eisen omzet, hoe je via ‘agile’ werken effectief een groter product kunt ontwikkelen, hoe je designpatronen kunt gebruiken om software onderhoudbaar en makkelijk aanpasbaar te houden en hoe je de kwaliteit van gemaakte software kunt meten en monitoren.
-
Bij het vak Automata, Computability and Complexity wordt er gekeken naar hoe (programmeer-)talen door computers worden herkend en welke types problemen met een computer worden opgelost. Daarbij wordt ook gekeken naar hoe je kunt bewijzen hoeveel tijd en geheugen een oplossing kost.
-
De meeste concepten achter programmeertalen zijn vergelijkbaar. Bij dit vak leer je basisconcepten waaruit veel programmeertalen zijn opgebouwd. Het begrijpen van deze concepten helpt bij het begrijpen van en werken met veel verschillende programmeertalen. Dit is belangrijk voor als je later met andere talen moet werken dan de talen die je tijdens de studie leert.
-
Bij het software project pas je je kennis van Software Engineering Methods toe in de praktijk. In een klein team maak je een goede software-oplossing voor een maatschappelijk relevant probleem. Je gaat aan de slag in opdracht van een (externe) opdrachtgever of gebruiker om uiteindelijk een werkend product op te leveren en de opdrachtgever tevreden te maken. Voor het Software Project werken we samen met externe bedrijven die gevarieerde projecten aanbieden.
-
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.
-
Variantblok Multimedia bestaat uit de vakken
- Signal Processing
- Image Processing
- Multimedia Analysis.
Bij dit variantblok leer je over hoe je multimedia kunt representeren, verwerken en analyseren. Denk hierbij aan het herkennen van liedjes aan de hand van een klein fragment, het herkennen en aflezen van kentekenplaten uit beeld en het herkennen van spraak. -
Variantblok Systems bestaat uit de vakken
- Digital Systems
- Embedded Software
- Operating Systems.
Dit variantblok geeft je de mogelijkheid om meer kennis op te doen in de richting van hardware, maar ook over optimalisatie van software voor hardwaresystemen. Tijdens een project maak je een robot die met een camera van een smartphone door een doolhof rijdt. -
Variantblok Data bestaat uit de vakken
- Big Data Processing
- Data Mining
- Computional Intelligence.
Je leert hoe een computer efficiënt omgaat met hele grote hoeveelheden data, hoe je data slim verzamelt en hoe je nuttige patronen uit deze data haalt.
Je start de eerste helft van het derde en laatste jaar van je bacheloropleiding met een minor. Je kunt kiezen uit bestaande minoren van de TU Delft, zoals Finance of Electrical Sustainable Energy Systems. Het is ook mogelijk om een minor van een andere universiteit te volgen, of een tijdje in het buitenland studeren.
Met het Research Project sluit je je opleiding af. Dit project doe je zelfstandig aan de TU Delft of een andere universiteit en betreft onderzoek naar een onderwerp dat verband houdt met informatica. Het bouwen van software om een nieuw algoritme te testen kan hier een onderdeel van zijn.
Vakken en competenties
-
Gedurende je minor heb je de kans om je te verdiepen in een andere richting dan informatica. Dit kan hardware of wiskunde zijn, maar kan bijvoorbeeld ook civiele techniek, rechten of een ander vakgebied zijn. Je minor mag je zelf kiezen en hoeft niet relevant te zijn aan je informaticaopleiding.
-
Het allerlaatste project van je bachelor. Dit project omvat een individueel onderzoeksproject over een geselecteerd onderwerp binnen de informatica, begeleid door een onderzoeker binnen informatica.
Je brengt twee tot drie maanden fulltime door met het beantwoorden van je onderzoeksvragen en het schrijven van een wetenschappelijk artikel. Afhankelijk van de keuze van het wetenschappelijk deelgebied zijn de onderwerpen zeer divers, van het begrijpen van menselijke cellen met behulp van deep learning, via algoritmische vergelijking voor navigatie, tot het verbeteren van een netwerk voor geldoverdracht.