Concerning Software Design, after successfully finishing this module a student is capable of:
Concerning Programming, after successfully finishing this module a student is capable of:
- Specifying an existing software system or a software system under design in terms of UML models (including class diagrams, activity diagrams and state machines).
- Interpreting these models, explaining the relation between different models, and between each model and the software code, and the usefulness of defining models in addition to writing software code.
- Explaining the commonly recognised phases of software development
- Applying version management in software development projects
- Explaining basic software metrics and using them to assess quality characteristics of a code base
Concerning Academic Skills, after successfully finishing this module a student is capable of:
- Explaining and applying the core concepts of imperative programming, such as variables, data types, structured programming statements, recursion, lists, arrays, methods, parameters, and exceptions.
- Explaining and applying the core concepts of object-orientation, such as object, class, value, type, object reference, interface, specialisation / inheritance, and composition.
- Using the Model/View/Controller pattern when developing applications.
- Writing simple multi-threaded programs, and explaining the operation and problems (race-conditions) of concurrent threads, and using synchronisation mechanisms, such as monitors, locks and wait sets.
- Writing programs using basic network mechanisms, based on sockets.
- Explaining and applying the basic concepts of security engineering and applying them to Java programs.
- Writing software of average size (around ten classes) in Java,by using the concepts mentioned above, including the use ofalgorithms for searching and sorting data
- Documenting software of this size, by using (informal)preconditions, postconditions and (class) invariants, and (informally) justifying the correctness of the implemented software.
- Explaining how this software can be tested, defining and executing a test plan, and measuring and improving test coverage.
Concerning Mathematics, after successfully finishing this module a student is capable of:
- Describing the major principles of effective time management.
- Applying these principles to make a personal planning for a medium long term period, e.g., a study semester, and for a medium-sized project.
- Formulating personal strengths and weaknesses with regard to time management, study behaviour and project work.
- Describing the major principles for defining a general project planning.
- Applying these principles when reflecting on some previous project planning.
- Giving and receiving peer feedback.
- Identifying major personal pitfalls concerning procrastination behaviour.
- work with elementary properties of integrals and
calculate integrals using different techniques, for functions of 1 variable
- work with power series and Taylor series, for functions of 1 variable
- solve linear differential equations
- work with complex numbers
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 self-management, and reflection on one’s own behavior w.r.t. planning.
For the mathematics, this module contains the Calculus 1B package (formely known as ‘Newton’), which covers the theory of mathematical functions and integrals.
Assumed previous knowledge
|(additional) requirement(s) for minorstudents: Maths A level or equivalent|
Beware! This module contains Mathematics B2, if this was already part of your program, you need to take a replacement course. Contact your program coordinator for more information.
|Bachelor Technical Computer Science||Required materials|
|Niño & Hosch. An Introduction to Programming and Object-Oriented Design Using Java. 3rd edition.|
|Chapter 14, until BlockingQueues (p. 819 - 877) from C.S. Horstmann and G. Cornell, Core Java, volume I: Fundamentals. Prentice Hall, 9th edition, 2012.|
|R. Van Tulder. Skill Sheets. 2012.|
|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.|
|Thomas’ Calculus, Early Transcendentals (special edition for UT);
|Zelfstudie geen begeleiding|
RemarkVerslag + modellen
RemarkVerslag + code