INTRODUCTION TO COMPUTER PROGRAMMING
Instructional goals
The course is intended to teach basic programming concepts to students with no prior coding experience, developing an attitude towards computational thinking. It will provide the students with an understanding of the role that computation can play in solving problems and with the ability to write small programs that allow them to accomplish useful goals.
Intended learning outcomes
Knowledge and understanding:
At the end of the course the students will have a deep knowledge of the fundamental principles of computer science and of modern imperative/object-oriented languages. The course will cover all the basics of programming in Python, as well as general computer programming concepts and techniques.
Applying knowledge and understanding:
At the end of the course the students will be able to solve simple computational problems and to accomplish coding tasks using the Python programming language.
Making judgements:
We expect students to be able to critically choose the most appropriate programming abstractions for solving simple computational problems on a rigorous methodological basis.
Communication skills:
The course will give the students the ability to communicate effectively - in English - their ideas, proposals, and critical reasoning in the field of programming and computational thinking.
Learning skills:
The course will provide the students with the ability to learn a series of design and programming tools and to apply them to different computational problems. The method of study will make the students able to break down complex problems arising in specific applications into manageable pieces and to apply fundamental programming abstractions in order to design rigorous and documentable solutions.
Course Contents
The course will familiarize the students with computer programming and will cover the following topics:
- Binary numbers
- Boolean logic
- Introduction to computer systems
- Introduction to programming languages
- Python basics
- Variables, data types, expressions
- Control structures
- Repetition structures
- Input/output: files and network
- Functions and modules
- Recursion
- Strings
- Lists
- Dictionaries
- Object-oriented programming and classes
Reference Books
All the class material is available on the e-learning platform (slides, lecture notes, and reference to the textbook).
Teaching Methods
Lectures and lab sessions. Students' participation during lectures is strongly encouraged.
Assessment Method
Competences will be assessed via a coding test (50% of the final grade) and a multiple-choice test (50% of the final grade). The coding test aims at demonstrating whether the students have mastered the fundamental principles of programming in the Python language. The multiple-choice test, through which the student will have to show to know theoretical concepts, aims at also assessing the learning skills.
Thesis assignment criteria
A thesis may be assigned, upon specific request to the instructor, to students who have an average grade above 27/30 and demonstrate a serious and motivated interest in the course topics.
Week 1
- Course overview: topics and exam rules.
- Introduction to computer systems: binary numbers, boolean logic, essentials of computer architectures.
Week 2
- Operating systems: basic concepts and hands-on session.
- Introduction to computer programming: Python language and its basic setup.
Week 3
- Python basics: values, types, expressions, operator precedence, casting, variables, print, branching statements (if, else, elif).
- Exercise session on Python.
Week 4
- Python: functions, stack frame, return statement, scope of variables.
- Exercise session on Python.
Week 5
Python: loop statements (for, while), range, break, continue.
- Exercise session on Python.
Week 6
- Python: strings, lists, indexing, slicing, immutability.
- Exercise session on Python.
Week 7
- Python: files and network.
- Exercise session on Python.
Week 8
- Python: dictionaries, sets, and tuples.
- Exercise session on Python.
Week 9
- Python: objects and classes.
- Exercise session on Python.
Week 10
- Python: recursive functions.
- Exercise session on Python.
Week 11
- Python: processes.
- Exercise session on Python.
Week 12
- Recap topics of the course.
- Exercise session on Python.