42 Piscine

# Learning Contents

* Vim
* iTerm
* GitHub
* iMac Usage

# C Language
	The primary language learned at the 42's Piscine is C: dealing with variables,
	pointers, memory allocation, macros, as well as creating functions and programs,
	including the use and creation of libraries and Makefiles.

# Shell
	The first two days of the bootcamp are dedicated to learning basic to intermediate
	shell commands to seamlessly navigate through the terminal.

# Git
	All projects are submitted via a remote git repository, which demands students to
	be at ease with such a system.

```

# Self-Learning and Proactiveness
	At 42, self-learning is at the core of its peer to peer learning methodology. There
	are no teachers whatsoever; the learning process is based on googling, enquiring
	your classmates, and empirical knowledge, each student learning at their own pace.

# Teamwork
	On weekends, a 48h team project called "Rush" is proposed: a 3-5 member group randomly
	chosen by the school's system must collaboratively develop a fully running application.
	The major challenge here is to equalize the different knowledge levels while finding a
	common work methodology that allows all team members to contribute to the project.

# Time Management and Resiliency
	The school is open 24/7. Thus, the so-called "pisciners" are free to work whenever
	they want, which demands excellent time management skills and resiliency for not
	"drowning" amid the massive load of work demanded by the non-stop 28-day program.

```

# Guidelines

* Do not enter the building without swiping or activating your access card. Even if you are coming in with another student, you must activate your card.
* Do not access level 1 or the basement unless authorized by the 42 Bocal.
* Do not assume the identity, electronically or otherwise, of any other student.
* Do not enter the building under the influence of alcohol/drugs.
* Do not lose or lend your building access card. If you do, immediately inform Bocal ($42 will be charged if card is lost).
* Do not wear clothing with offensive graphics or sayings.
* Do not abuse or disrespect Bocal, visitors or any member of the 42 community by any means.
* Do not misuse any personal data available on the 42 intranet or shared with you by other students or Bocal.
* Do not use the 42 network to access read or download inappropriate materials.
* Do not direct threatening, abusive or harassment to anyone.
* Do not engage in acts of physical violence or sexual in nature.
* Do not engage in acts of vandalism and / or theft.

## Desktop Clusters

* DO NOT switch off or unplug the computer by yourself.
* USBs are forbidden.
* Do not configure anything on the computers, including the network.
* Save your work and logout if you are leaving your station for more than 15 minutes to avoid ISCII connection issues.
* Strictly no food and drinks at desktop areas. You can only have small bites at the bag storage area. Food and drink is only to be consumed in the café and community space on level 3.
* Bags must be placed at the bag storage area.
* No feet on chairs or desks.
* Do not use loudspeakers at computers.
* You are welcome to bring your own keyboard and mouse, however these must be packed up when not in use and stored in our "bag and coat area" or taken home with you.
* You can bring your own headphones into the campus; however please be careful when using the headphone jack directly into an iMac and consider to use a headphone USB adaptor instead.
* Do not reboot, move or unplug an iMac without authorization.

## Visitor Building Access

Before bringing a visitor to 42, please talk to one of the Bocal at least 3 business days prior to the guest's visit.

* Make sure you receive approval by the Bocal prior to the visit.
* Make they are signed in to the 42 attendance register (level 3).
* Make sure they are accompanied by you at all times.
* Make sure they are only present during hours when Bocal is on duty.

## Other Facilities

* Help maintain a great study space, do not misuse or vandalize the building and surrounding areas, or any of its fixtures, fittings and equipment resources provided.
* Ensure all common areas and emergency exits are left clean tidy and free from hazards.
* Do not smoke anywhere within the building or the immediate vicinity of the building.
* Exit the building and follow all instructions in the event of an emergency or if the fire evacuation alarms are sounded.
* Do not plug in an external device into the network, without prior approval of the Bocal (other than the approved headphone jack).

## Academic Dishonesty

* Do not look at a mobile phone or other unauthorized devices during an exam.
* Do not exchange information with another student during an exam (in the exam room, toilets, etc.).
* Do not bring unauthorized materials (cheat sheets) with code or information already to help gain an unfair advantage during an exam.
* Do not use information to solve an exam from an unauthorized source.
* Do not breach any of the exam guidelines.
* Do not submit a project that does not compile or work at all, but has been validated during a defence.
* Do not submit the work of another student and claim it as your own work.
* Do not steal a project produced by someone else (copying a project and not understanding it, having some files or headers from other students) and request evaluation.
* As an evaluator, do not validate a project that has obvious cheating from the student that submitted the work.
* Do not undertake remote evaluations. If not explicitly authorized in the project or the rating guidelines, remote evaluations are forbidden. Both the student and the evaluator must be physically in the school, in front of the same computer.
* Do not seek opportunities to bypass the Moulinette or change the official repository of the evaluation (ex: with zsh aliases).

# Folder Organization

Recommend best setup of folders and files you should have on your desktop to make everything organised and simple.
Create a folder called Piscine on your Desktop
Inside Piscine you create 4 folders

1. A Folder Called Shell Projects
	1. Shell00
	2. Shell01
2. A Folder Called C Projects
	1. C00
		1. ex00
		2. ex01
		3. ex02
	2. C02
	3. C03
3. A Folder Called Rush Projects
	1. Rush00
	2. Rush01
	3. Rush02
4. A Folder called Evaluations
	1. usernameC00

**Note:** Nothing is guaranteed though as the 42 Entrance to the school isn't public information.

# Suggested Inventory

* 📱 Your Phone
* 🔌 A Phone Charger
* 🎧 Your Headphones
* 🖱️ Your Mouse
* 🚰 A Water Bottle
* 📓 A Notebook + Pen
* 🥪 Your Lunch or Credit Card
* 😷 A Mask

# Desktop Setup

## Suggested Applications

1. FireFox Browser Window (42 Intra, Discord & Nuclino Tabs)
2. Browser Window (To Research The Project & any GitHub Tabs)

1. iTerm Window (To do your C Project in)
2. iTerm Window (For Normintette and Compiling the C Project)

# Norminette

* First, make sure you are on your terminal, and you are in your project directory.
* In my directory I have created a simple hello.c file that looks like this:
* To run the Norminette, all you need to do is use the command as shown:
* Notice the errors here. Make sure you fix all of them!
* The following example shows how the "missing void" error was fixed. Notice the code and observe the reaction of the Norminette. It no longer shows that error.

# Projects

## C Programming

* C00
* C01
* C02
* C03
* C04
* C05
* C06
* C07
* C08

# Preparation

1. Basics of C Programming
	1. Watch tutorials on YouTube or read articles on C basics.
	2. Write simple programs to understand variables, data types, and basic syntax.
2. Control Structures
	1. Learn about control structures (if-else, loops).
	2. Create programs to solve simple problems using loops and conditionals.
3. Advanced C Concepts
	1. Explore pointers, arrays, and functions.
	2. Work on projects that involve these concepts.
4. Data Structures
	1. Study data structures like structs and linked lists.
	2. Implement data structures from scratch.
5. Algorithms and Problem Solving
	1. Learn algorithms and problem-solving techniques.
	2. Solve coding challenges on platforms like LeetCode and HackerRank.
6. Linux and System Operations
	1. Familiarize yourself with Linux commands and system calls.
	2. Work on projects that involve system operations.

# Linkies

* Online C compiler, visualise your C code.
* Pasqualerossi 42Adelaide Github Repo
* Harvard's CS50x 2023 Week One Lecture C (free)
* Coding Chronicles: Journey through 42
* Online Compiler
* Best search platforms
	+ Google
	+ YouTube
	+ Stack Overflow
	+ Quora
	+ Reddit
	+ CodeRanch
	+ StackExchange
	+ GitHub

# Tips

* Bring your own noise cancelling earphones / headphones with you, you will need them
* You can bring your own keyboard and mouse should you have your own preferences.
* Make sure you save your work and logout from the computer properly after each use to avoid the ISCII connection issue. If you locked your screen for more than 42 minutes, your computer will log you out automatically.
* During the evaluation process, the evaluator will check the Norminette first. If your codes do not pass the Norminette, your evaluation will automatically fail.