Taught courses

Software Atelier I: Software Tools (Fall 2011)

The goal of the Software Atelier is to teach the student to become a computing professional. The main objective of Software Atelier I is to learn to use some fundamental software tools and the principles behind those tools.
The 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.

Software Atelier IV: Software engineering for web application (Spring 2010, Spring 2009)

The goal of the course is to learn how to design and develop sophisticated web applications by "thinking in objects". The course is organized in four parts: At the beginning the students learn smalltalk, a dynamic object oriented language, and Visualworks, an IDE to develop smalltalk code. In the second part of the course the students learn Seaside (the web development framework), meta-modeling with Magritte (a fully dynamic meta-description framework), and objects percistency. The topics for the third part of the course are web 2.0 technologies in Seaside (like AJAX), Javascript libraries, APIs (for example google maps API) and basic principles about web usability design. In the last part the students are involved in projects in which they have to develop web applications with Seaside and Magritte.

Assisted courses

Programming Fundamentals 1 (Fall 2007, Fall 2005)

The main objectives are to teach fundamental approaches to problem solving and their direct realisation with a programming language.
The course introduces fundamental concepts of problem solving: problem analysis, decomposition and composition and presents techniques like recursion, data abstraction, and iterative refinement. In introduces basic programming constructs (loops, definitions), data structures (lists, trees, graphs, etc.) and algorithms. The exercises, which include both solo and group exercises, will be solved using the functional programming language Scheme. The second half of the semester includes a group project.

Programming Fundamentals 2 (Spring 2006)

The main objectives are to teach program design with object-oriented languages, to introduce object-oriented development techniques and to introduce the basic principles of programming language design.

Software Development (Spring 2007)

This course focuses on the development of large and complex software systems, i.e., systems that are built by teams, that exist in many versions, that last many years, and that undergo many changes. The course will focus on three crucial aspects: the organization of the software development process, the analysis and specification of requirements and the verification and validation process.

Software Design and Evolution (Fall 2009, Fall 2008)

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.

During the course I gave a lecture titled "Bug Prediction and Analysis". The slides are available below.

View other presentations

Tutorials

Copyright © Marco D'Ambros - Design adapted from Inf08 by Inf Design