Projects / Programming coursework, Years 1 and 2

Programming coursework, Years 1 and 2

2023 to 2025ESTACA coursework, Years 1 and 2, C, C++ and PythonSoftware
Coursework

The three console programs are the real ones, recorded step by step. Each input types itself, then Enter shows the next screen. Console text translated into English, program logic unchanged.

01

LineIt card game

Year 1, C, team of 2

A card game for 2 to 5 players, played in the console. Each player builds a line of cards that goes up or down. The board is drawn with colors, and the 106 cards are stored in a structured type.

A turn in progress, market, hand and jackpot

Interactive version on a computer.

Real game with a fixed shuffle, two rounds.
02

Ride sharing manager

Year 2, C++, individual project

A console app in the spirit of BlaBlaCar, built on two classes, traveler and trip. It registers travelers on trips, creates, edits and deletes trips and users, and filters trips by price or date.

Trips filtered by price

Interactive version on a computer.

A traveler added to a trip, then trips filtered by price.
03

Online shop manager

Year 2, C++, individual project

A shop manager built on a class hierarchy. Person is the base class, customer and employee inherit from it, and manager inherits from employee. Each role gets its own menus. Managers change stock, add products and customers, and check employee scores.

Manager interface, after code authentication

Interactive version on a computer.

Manager login, a stock change, then an employee's score.
04

Maze solving robot

Year 2, Python, team of 3, LEGO Spike

The robot follows black tape on a white floor. Colored patches mark the maze, blue for an intersection, red for a dead end, yellow for the treasure. It explores depth first. At each intersection it tries right, then straight, then left, and it turns back at dead ends. Each intersection becomes a node, placed by wheel odometry. Once the treasure is found, Dijkstra on the discovered nodes gives the shortest way back.

The robot was only available during lab sessions, so the team tested the code in between with the GearsBot simulator.

Start

def explore(robot, nodes):    while not robot.treasure:        robot.follow_line()          # to the next patch        color = robot.sensor.color()        if color == RED:             # dead end            robot.u_turn()            robot.last_node.mark(DEAD_END)        elif color == BLUE:          # intersection            intersection(robot, nodes)        elif color == YELLOW:        # treasure            goal = nodes.add(robot.position)            link(robot.last_node, goal)            robot.treasure = True            robot.u_turn() def intersection(robot, nodes):    node = nodes.near(robot.position)  # odometry    if node is None:        node = nodes.add(robot.position)        node.scan_paths()            # lines seen    elif robot.on_new_line:          # loop closed        link(robot.last_node, node)        robot.u_turn()        return    link(robot.last_node, node)      # neighbors    robot.last_node = node    for turn in (RIGHT, STRAIGHT, LEFT):        if node.paths[robot.heading + turn] == DETECTED:            robot.turn(turn)            return    robot.turn_toward(node.parent)   # backtrack def dijkstra(node):    checked.append(node)    for neighbor in node.neighbors:        d = node.distance + distance(node, neighbor)        if neighbor.distance > d:            neighbor.distance = d            parent[neighbor] = node            reached.append(neighbor)    nxt = closest(reached, not in checked)    if nxt:        dijkstra(nxt) def go_home(robot, start, goal):    goal.distance = 0    dijkstra(goal)    path = trace_path(start)         # reversed    for node in path[1:]:        robot.turn_toward(node)        robot.follow_line()
Example maze drawn for this page. Pseudo-code written from the team's Python program and report, without the motor and sensor details.
Test maze from the team's report. In green, the shortest way from the treasure back to the entrance.