Programming Styles
People
Course director
Assistant
Description
COURSE OBJECTIVES
Strengthen programming skills and understanding of fundamental programming language concepts.
COURSE DESCRIPTION
You are a good programmer. You are fluent in multiple programming languages. But can you program in style?
This course is a journey through the landscape of programming languages and idioms. You will discover a multitude of dramatically different programming styles. A style arises from a set of constraints you impose on your code. Styles are independent of a given programming language. You can use many different programming languages to write code in a given style.
*Pre-requisites*: This course expects participants to already be fluent in at least two different programming languages (ideally Java and JavaScript).
LEARNING METHODS
In this course you won't just hear about and discuss various styles. You will practice those styles. You will look at programming as an art, and like a budding artist—be it a painter, a writer, or a musician—you will practice producing works in multiple artistic styles.
EXAMINATION INFORMATION
Written in-class final exam (if possible).
REFERENCES
- Mandatory textbook: Cristina Videira Lopes. Exercises in Programming Style. CRC Press. 2014. ISBN 9781482227376
- This course uses Informa as a learning platform. Check the "Programming Styles" course site, with course themes, topics, skills, labs, readings, and more at https://informa.inf.usi.ch/courses
Education
- Master of Science in Artificial Intelligence, Elective course, Lecture, 1st year
- Master of Science in Artificial Intelligence, Elective course, Lecture, 2nd year
- Master of Science in Informatics, Elective course, Lecture, 1st year
- Master of Science in Informatics, Elective course, Lecture, 2nd year
- Master of Science in Software & Data Engineering, Core course, Lecture, 1st year
- PhD programme of the Faculty of Informatics, Elective course, Lecture, 1st year (2.0 ECTS)
- PhD programme of the Faculty of Informatics, Elective course, Lecture, 2nd year (2.0 ECTS)