Semester 5

Presentation & objectives

During semester 5, the main goal of the computer science course is to consolidate your knowledge in programming, algorithmics and computers in general, that you acquired in your previous studies. To do so, you will follow multiple courses, that will guide you from setting up an environment to writing a full program using more advanced notions such as object-oriented programming and artificial intelligence tools.

During this semester, we will reason at the scale of a single computer. You will learn how to solve a problem, using algorithms, or based on existing data. Extending this to an ecosystem of machines is the main goal of semester 6.

In terms of programming languages, we will mainly use Python, for its simplicity, large community, and prevalence in many real-life applications. Still, everytime you will encounter a block of code on this website, we will also provide you the Java version of that code. During semester 6, you will mainly use Java, so be curious already, to familiarize with its syntax.

Here are the slides used to introduce the course in class.

How is the semester organized?

During semester 5, the computer science course is divided into four blocks:

  • Environment.

    Environment lessons will help you understand the machine on which you work, your operating system, files, permissions, etc. Also, we will help you install a proper environment for programming. Overall, we will present you some general aspects of computer science.

  • Algorithmics.

    In these lessons, you will learn how to go from a problem to an algorithmic solution. We will also present you some properties of algorithms and data structures, so that you can compare them. Finally, you will shift toward more advanced elements, and will have an introduction on advanced algorithmic strategies and artificial intelligence.

  • Programming.

    In these lessons, you will learn how to translate an algorithmic solution into a well-written program, in Python language. You will also discover different programming paradigms, and will learn how to properly make sure a program works well.

  • Project.

    During the whole semester, you will have to work on a small project, that will help you put in practice the concepts and practices learned in the three other blocks. This project resolves around a video game called PyRat, in which you should guide a rat in a maze to grab pieces of cheese. At the end of the semester, you will enter a PyRat tournament to compete against other students.

Evaluation

You will be mainly evaluated on the project, on a regular basis. Additionally, there will be punctual evaluations in the programming and algorithmics classes. Please check the pages associated to these course for details.

These evaluations correspond to the following skills, from the official repository of IMT Atlantique:

  • BC04 – Conceive a solution to a problem, prioritizing the needs and constraints of stakeholders, within an approach that emphasizes innovation and anticipates future developments (technological, socio-economic, ecological, and societal…).

    Propose an algorithmic solution to a given problem and justify the choices based on objective criteria.

  • BC07 – Produce, implement, and maintain based on specifications (including economic, regulatory, and security requirements) while being able to discuss, negotiate, and justify the decisions made in the relevant category.

    Develop a computer program in response to an algorithmic problem by using the programming language constructs appropriately, adhering to best practices in the field, and justifying your choices.