Taught course: Software Engineering for web applications

In the spring 2008 I was lecturer, together with Prof. Lanza, for Software Atelier IV: Software engineering for web application.
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

From 2005 to 2008 I was teaching assistant for the following courses.

Programming Fundamentals 1

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

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

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

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

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