SluitenHelpPrint
Switch to English
Cursus: 202001024
202001024
Software Systems Core
Cursus informatieRooster
Cursus202001024
Studiepunten (ECTS)12
CursustypeOnderwijseenheid
VoertaalEngels
Contactpersoondr. T. van Dijk
E-mailt.vandijk@utwente.nl
Docenten
VorigeVolgende 5
Docent
dr. F. Ahmed
Docent
Y.d.C. Barrios Fleitas
Docent
R.H. Bemthuis
Contactpersoon van de cursus
dr. T. van Dijk
Docent
dr. T. van Dijk
Collegejaar2020
Aanvangsblok
1B
OpmerkingOnly B-TCS students can register via Osiris. Others need to contact modulesupport-tcs@utwente.nl or the minor-office
AanmeldingsprocedureZelf aanmelden via OSIRIS Student
Inschrijven via OSIRISJa
Cursusdoelen
Concerning Software Design, after successfully finishing this module a student is capable of:
  • Specifying an existing software system or a software system under design by using UML models (at least class diagrams, activity diagrams and state machines), with the help of software tools that are suitable for this purpose.
  • Analysing the relations between different models on the one hand, and between each model and the software code on the other hand.
  • Explaining the commonly recognized phases of a structured software development process.
  • Measuring and interpreting basic software metrics to assess the quality characteristics of a code base.

Concerning Programming, after successfully finishing this module a student is capable of:
  • Applying the core concepts of imperative programming, such as variables, data types, structured programming statements, recursion, lists, arrays, methods, parameters and exceptions.
  • Applying the core concepts of object-orientation, such as object, class, value, type, object reference, interface, specialisation / inheritance, and composition.
  • Implementing interactive applications using the Model/View/Controller pattern.
  • Applying basic synchronisation mechanisms, such as monitors, locks and wait sets, to the problems of concurrent threads (race-conditions).
  • Implementing client-server programs using basic network mechanisms such as Java sockets.
  • Applying the basic concepts and techniques of security engineering to address the challenges of producing secure software.
  • Implementing software of average size (10-20 classes) in Java by using the core concepts of imperative programming and object-orientation.
  • Documenting software of average size (10-20 classes) by defining preconditions, postconditions and (class) invariants. Defining and performing a test plan for software of average size (10-20 classes) with appropriate test coverage.
  • Collaborating with other students according to the pair programming method.

Concerning Academic Skills, after successfully finishing this module a student is capable of:
  • Applying the most important principles and techniques for effective time management, like personal planning elaboration and reflection, identification of personal strengths and weaknesses, giving and receiving feedback, and procrastination avoidance, in a project of limited complexity.
Inhoud
In this module the students are introduced to the design, implementation and testing of software systems, and to performing a project independently.

For the design of software systems, they learn to use Software Engineering models, particularly the UML diagrams (class diagrams, activity diagrams and statecharts), and they get acquainted with the waterfall software development processes.

For the programming of software systems, they learn the core concepts of program structuring, object-orientation and multi-threading with the help of the Java programming language, with attention to correctness by means of (informal) preconditions and postconditions. In addition, the module addresses security engineering aspects in the context of Java. In this module the students build upon the knowledge on algorithms and recursion acquired in Module 1. For testing software systems, the students learn to distinguish among the different levels at which testing can be performed (specially unit testing and system testing), the principles underlying a test plan and a couple of relatively simple testing techniques.

For academic and project skills, attention is given to project management, planning, time- and selfmanagement, and reflection on one’s own behavior w.r.t. planning.

 

For questions concerning the module, please email: module2-tcs@utwente.nl

Voorkennis
(additional) requirement(s) for minorstudents: Maths A level or equivalent.
Participating study
Bachelor Technical Computer Science
Module
Module 2
Verplicht materiaal
Book
David J. Eck Introduction to Programming Using Java, Seventh Edition, Version 7.0, August 2014. Available online at http://math.hws.edu/javanotes
Course guide
Reader 'Softwaresystems' 2020-2021.
Aanbevolen materiaal
Book
Chapter 14, until BlockingQueues (p. 819 - 877) from C.S. Horstmann and G. Cornell, Core Java, volume I: Fundamentals. Prentice Hall, 9th edition, 2012.
Book
Chapter 3, until Making URL Connections (p. 185 - 210) from C.S. Horstmann and G. Cornell, Core Java, volume II: Advanced Features. Prentice Hall, 9th edition, 2012.
Werkvormen
Hoorcollege

Practicum

Project begeleid

Zelfstudie geen begeleiding

Toetsen
Design Theory

Opmerking
Written exam

Design Project

Programming Theory

Opmerking
Written exam

Programming Project

Opmerking
Report + code

Additional Requirements

SluitenHelpPrint
Switch to English