This course explains basic techniques for procedural programming using the C language.

News

Date Info
03/07/2012 Details for the Computer programming 1 written test of 5/7/2012
The written test of 5/7 will take place in aula beta at 14:30.
14/06/2012 Results of the Computer programming 1 written test of 13/06/2012
The results of the written test of 13/06 are available.
11/06/2012 Details for the Computer programming 1 written test of 13/6
The written test of 13/6 will take place in aula beta at 8:30.
05/06/2012 Office hours canceled
Regular office hour are canceled until next semester; students can arrange an appointment via e-mail.
22/03/2012 Office hour suspension
Because of the next meeting of the Division council and the Easter holidays, the office hours up to 13/4 will take place by appointment.
19/03/2012 Office hours canceled
Office hour on Mar 21 are canceled; students can arrange an appointment via e-mail.
05/03/2012 Additional oral test date for Computer programming 1 in the February session
An additional oral test for the February session (both for theory and laboratory parts) will take place on Thursday 8/3 at 11:30 at the sala riunioni at the second floor of the Computer science Department. Students willing to take the test in this date should contact the teacher via e-mail.
03/03/2012 Results of the Computer programming 1 written test of 29/02/2012
The results of the written test of 29/02 are available.
21/02/2012 Office hours canceled
Office hour between Feb 29 and Mar 7 (included) are canceled; students can arrange an appointment via e-mail.
21/02/2012 Details for the Computer programming 1 written test of 29/02
The written test of Wednesday 29/02 will take place at 13:30 at aula G08 in via Golgi.
20/02/2012 Office hour for the spring semester
Office hour for the spring semester will be on Tuesday, 14:30 to 16:00.
01/02/2012 Correction of the Computer programming 1 written test of 23/1
After the oral tests of Thursday 2/2 the written test of 23/1 will be corrected.
30/01/2012 Oral tests of Computer programming 1 for the January session
Oral tests for the Jaunary session will take place at 9:30 of Thursday 2/2 in aula 5 and aula 6 of the Computer scince Department. In order to be admitted to these test it is requested to: 1. pass the laboratory test of 31/01 (results will be published shortly after the test ends), and 2. pass the written test of 23/01 or both midterms.
26/01/2012 Results of the Computer programming 1 written test of 23/01/2012
The results of the written test of 23/01 are available.
19/01/2012 Results of the Computer programming 1 second midterm of 18/01/2012
The results of the first midterm of Computer programming 1 of 18/01 are available.
18/01/2012 Office hours canceled
Office hours of 19/01 are canceled; students can arrange an appointment via e-mail.
16/01/2012 Written test of Computer programming 1 of 23/01/2012
The written test of Monday 23/01 will be hold at 8:30 in aula beta.
15/01/2012 Seminar on C programming tools
Students are advised to follow the seminar on C programming tools held by Dr. Santini on Tuesday 17/01 at 10:30 in aula V9.
11/01/2012 Office hour change
Office hour for this week will be on Friday 13 at 10:30.
22/12/2011 Second midterm of Computer programming 1
The second midterm will be held on Wednesday 18/01 at 8:30 in aula beta.
22/12/2011 Schedule change for the Computer programming 1 class of 12/01
Class of Thurdsay 12/01 is postponed to Tuesday 17/01.
22/12/2011 Office hours change
Today office hours will be held at 16:30.
24/11/2011 Cancellation of the Computer programming 1 class of 6/12
6/12 class is canceled.
24/11/2011 Results of the Computer programming 1 first midterm of 16/11/2011
The results of the first midterm of Computer programming 1 of 16/11 are available.
03/11/2011 First midterm of Computer programming 1
The first midterm will be held on Wednesday, November 16th. Registration through SIFA terminals is required.
03/10/2011 Office hours canceled
Office hours of 6/10 are canceled; students can arrange an appointment via e-mail.
20/09/2011 Beginning of che Computer Programming 1 classes
Theory and laboratory classes will start on October 4th and October 14th, respectively.

Language

Lectures are in italian.

Course schedule

Lectures will take place according to the following schedule:

Day Hour Place
Tuesday 8:30 - 10:30 aula 204 (via Celoria)
Wednesday 8:30 - 10:30 aula beta (via Comelico)
Thursday 12:30 - 14:30 aula beta (via Comelico)

Any change to the schedule will be announced in class and published in paragraph News of this page. In particular, the Tuesday lesson will occasionally be held from 8:30 to 11:30.

The course is associated to a laboratory held on each Friday from 8:30 until 12:30 in aula sigma of the CS departments in Via Comelico. For further informations, refer to the related web site.

Office hours

By appointment (via e-mail). It is possible contact the teacher by e-mail, taking care to read in advance the guide prepared by Prof. Sebastiano Vigna and clearly specifying in the message the course name and the academic year. In particular, students are encouraged to always use their academic address (i.e. based on the domain studenti.unimi.it) signing with name and student ID number and recalling that the response time may vary depending on the teacher commitments.

Course material

The course is based on the following material:

• the textbook: K. N. King, C Programming -- A Modern Approach, second edition, published by W. W. Norton (ISBN 978-0-393-97950-3), associated to a homepage containing an errata corrige, the examples' source code and the solution to some exercises;
• the course notes (in italian) for the part on architecture and boolean logic, written by Prof. Paolo Boldi.

Students willing to get a strong background on the subject of computer programming are also advised to read:

Syllabus

The course explains the topics listed in the lecture calendar, covering the course notes and textbook contents in chapters 1-17 (excluding section 12.4) and 22.

Lectures calendar

Date Topic
04/10/2011 Introduction to the course and bases of computer architecture
05/10/2011 Information encoding
12/10/2011 Information encoding
13/10/2011 Languages,interpreters, compilers and first C programs
18/10/2011 Boole algebra and circuits
19/10/2011 Formatted I/O and expressions
20/10/2011 Branching control structures
25/10/2011 Iteration control structures
26/10/2011 Iteration control structures
27/10/2011 Iteration control structures
02/11/2011 Recap on control structures
03/11/2011 Elementary types
08/11/2011 Arrays
09/11/2011 Arrays
10/11/2011 Functions and program structure
15/11/2011 Functions and parameters
16/11/2011 Midterm
17/11/2011 Midterm correction
22/11/2011 Program organization
23/11/2011 Pointers
24/11/2011 Pointer arithmetics
29/11/2011 Strings
30/11/2011 Strings, array of strings and pointers to pointers
01/12/2011 Sorting algorithms
13/12/2011 Search algorithms
14/12/2011 Recursion
15/12/2011 Preprocessor and programs of big dimension
20/12/2011 Structures, unions and enumerations
21/12/2011 Dynamic memory allocation
22/12/2011 Lists
10/01/2012 I/O and files
11/01/2012 Usage of files and abstract data types
17/01/2012 Abstract data types

Exam modalities

The exam conists of three parts: a written one, a laboratory one, and an oral one. These parts should be passed on the same session (check later on for a list of exceptions concerning the sessions of January and February, and for midterms) with a positive score in all them. The average score of the written and laboratory part (weighed in function of their credits) represents the base score for the oral part. It is highlighted that the oral examination can lead to both rising or lowering this base score, possibly implying a fail.

Students willing to take the exam in a given session should subscribe through SIFA (using either @SIFA on-line, or the corresponding terminals at the university), both for the laboratory and the written parts. This holds for every sesion, including midterms.

Midterms

The course has two optional midterms scheduled (on 16th November and approximately on end of January). Students willing to take the exam in January or February and whose midterms are both passed are not requested to take the written part (the average score of midterms substitutes the written part score). Students having passed both midterms can anyway take the written part, although in this case they need to pass the latter and cannot get back to its midterm average score.

Session jump

Students failing a written part with a sensibly low score (that is, sensibly below the average score of all students for that session) will not be allowed to take the exam on the next session.

Students of Computer science and telecommunications

Students of the degree of Computer science and telecommunications can take the exam of Computer programming passing an oral test held during the written examinations of Computer programming 1 for the degree of Computer science and music. They are anyway requested to subscribe to the exam.

Exam sessions

Session Date
November (midterm) 16/11/2011 Results
January (midterm) 18/01/2012 Results
January 23/01/2012 Results
February 29/02/2012 Results
June 13/06/2012 Results
July 05/07/2012 converted into oral because of a low number of participants
September 20/09/2012 converted into oral because of a low number of participants