|ST3||Parsing & Modeling Swift Systems
|ST2||UrbanIt: Mobile 3D Git Visualization
|ST1||Visualizing Developers Interactions with the IDE
The class teaches the basic principles of how a computer functions, from transistors and logical gates to CPU, memory, and I/O interfaces. Students learn how one can describe the basic operations in a computer using digital logic, and how these operations can be realized in both hardware and software. They gradually combine these basic operations into a "microarchitecture", i.e., a software-controlled data-path that connects digital memory with an ALU.
|Spring 2013, Spring 2014||Bachelor||
Software Atelier IV
This atelier is about software engineering in practice. When programming stops, software engineering starts. The scale and complexity of non-trivial systems does not permit ad-hoc development anymore, but an approach is required rooted in software engineering. Students will learn that beyond programming problems, most problems arise from team collaboration. Students will get different tools such as Subversion, Git, and TRAC. You will get experience with testing, debugging, and deployment.
Software Atelier I
This atelier gives an introduction to the role of computing and computer scientists in the professional world as well as society in general and provides an environment for the students to learn about and use specific software tools, work with other students in group projects, and present the results of their projects to the class. The emphasis in the first semester is on the fundamental tools necessary to support individual and group work. At least the following topics are addressed: UNIX shell command lines and processing, document processing with LaTeX, web site editing with HTML and CSS, version control with subversion.
Introduction to Software Engineering
The ultimate goal of software development is to learn how to develop a software product of a size that requires the work of a group of software developers. Detailed objectives include: (1) learn different kinds of software processes and be able to define a process suitable for non-trivial project; (2) To learn the impact of group organisation and how to organize a small group of software development to optmize productivity and results; (3) To learn how to analyse requirements and produce useful specifications; and (4) To learn how to define and assess the quality of the final product.
Software Design and Evolution
This course provides students with an overview of design heuristics and puts them in an evolutionary context. It teaches students to design systems to withstand the inevitable decay and using reverse engineering and reengineering techniques, it lets students "see" software as more than just source code.