The course aims at providing students (often coming from different
universities and with different backgrounds) with a common knowledge
about the concepts of programming and software development
in a Unix-like environment. In particular, the course will focus on
practical techniques of program development for small-scale projects
produced by individuals or small groups.
At the end of the course, students will learn "how to use a computer"
from a programmer's and engineer's point of view. In particular,
they will learn how to use the existing command lines tools, and how to
design and implement a program to solve a given problem.
This is a "hands on" class, where students have to complete a certain
number of practical homeworks that contribute significantly
to the final grade.
The course will not cover basic programming algorithms and data structures,
but it will focus on writing applications to solve practical problems.