- Table of Contents
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/APPING1 (first year of the engineering cycle). This guide is intended for students who passed Advance Parallèle, Advance CPGE exam, Apprentices, or International Exchanges. As September is coming, 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 🏊♂️("swimming pool" in French)...
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.
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 adapt to constraints.
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
oremacs
- 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
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 is an operating system like Windows or MacOS. Programming is taught almost exclusively on this platform.
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:
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
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.
- Beej's Guide to Python programming
- PyFlo - A Free, Interactive Guide to Python Programming
- https://fr.futurecoder.io/course
- Learn to Code by Solving Problems
Focus on memory management and data structures.
- Zeste de Savoir - Algorithms for the Apprentice Programmer
- https://www.coursera.org/learn/algorithms-part1
- VisuAlgo
- String manipulation
- Array manipulation and search algorithms
- Implementation of linked lists (with chaining)
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.
- No Starch Press: many books on programming and systems.
- Advent of Code: programming challenges
- LeetCode: programming problems