/epita-ing1-prep

Guide de préparation pour les nouveaux étudiants en 1ère année d'ingénierie (ING1) à l'EPITA : ressources essentielles avant la Piscine C/UNIX. 🚀 #EPITA #ING1 #ProgrammationC #Algorithmique #CS

Primary LanguageNixGNU Free Documentation License v1.3GFDL-1.3

ING1 Entry Preparation Guide at EPITA

en fr

EPITA logo

Introduction

Welcome to EPITA (School of Computer Science and Advanced Techniques). If you are reading this, it's probably because you want to prepare to join ING1 (first year of the engineering cycle). This guide is intended for students who passed the Advance Parallèle or Advance CPGE exam. As August is coming to an end and the start of the school year is approaching, whether you are reviewing your programming courses or relaxing by the pool, this guide will help you start the year a bit more prepared. Speaking of the Piscine...

Preparing for the Piscine

Since the school's inception in 1984, the Piscine has been a C/UNIX programming workshop. You will learn the basics of C programming, implement algorithms, data structures from scratch, and build simple programs that interface with the operating system. This resource workshop lays the foundation for students to later undertake increasingly complex programming projects, first individually and then in teams. Collaboration on larger and larger projects, akin to working in a company, is emphasized. This expertise is acquired over time and through regular programming practice.

Computer Science Harmonization

EPITA stands out with a specific identity in the construction of its activities. The aim is to gain expertise in computer science and become efficient in project execution.

To acclimate, the first month offers the following courses (for those new to computer science or with little practice):

  • My PC & UNIX Systems
  • Algorithms and Data Structures
  • Introduction to Programming
  • Computer Architecture

The goal of computer science harmonization is to make everyone enjoy programming, personalize their system, understand why things are the way they are, and how everything works! In other words, learning is not just theoretical; it is facilitated by establishing a particular environment. You will need to step out of your comfort zone and consider constraints.

Specifically?

Here is a non-exhaustive list of what you will be expected to do:

  • Install Linux natively on your personal machine and configure it
  • Use a terminal to type shell command lines
  • Chain commands to process data
  • Use a text-mode editor like vim or emacs
  • Reimplement a data structure such as a linked list in C using a memory allocator
  • Compile and run your program from the command line
  • Personalize your work environment under i3
  • Learn to type efficiently (typing)
  • Program in assembly language in an emulator
  • Use git to save your work

Resources

While waiting to access the educational content provided by EPITA, here is a collection of various resources you could explore for about two weeks (regularity is more important than quantity).

Don't worry if you don't cover everything; it's long and that's normal! We will see all of this soon.

Linux

Linux is an operating system like Windows or MacOS. Programming is taught almost exclusively on this platform.

Level 1: Ubuntu

If you have never used Linux, I recommend Ubuntu as your first distribution.

You will find an introduction to Linux oriented towards Ubuntu at the following address:

Level 2: ArchLinux

If you have already installed Linux and are comfortable with the command line and file editing, I recommend doing an ArchLinux installation (in a virtual machine at first, but then consider having it natively).

ArchLinux is a distribution where you start from scratch to build your system. This principle leads the user to solve problems as they wish to have additional features (such as wifi).

Recommended window manager (WM): i3

Programming

Python

First, ensure you can write small programs, algorithms in Python, and if possible, implement data structures.

This is also an opportunity, if you have never done so, to get interested in testing (pytest) which validates the proper functioning of code. They are essential for building larger programs but also allow for faster programming.

C/UNIX

Focus on memory management and data structures.

Algorithms

What to focus on?

  • String manipulation
  • Array manipulation and search algorithms
  • Implementation of linked lists (with chaining)

Text Editor

vim

vim will probably be your text editor for the upcoming semester. Once accustomed to "modal" editing, you become very efficient in modifying or navigating text. A tutorial is usually installed with the editor and can be started with vimtutor.

There are numerous online resources:

Don't make it a priority; the most important thing is to be comfortable with your editor to write some programs in Python or C.

Explore and Go Further