Senegal Classe de Première - Digital and Computer Science

This course builds upon prior computer science instruction in primary school, middle school mathematics and technology, and the secondary school "Digital and Scientific Technology" course. It also incorporates the algorithmic concepts covered in secondary school mathematics. The curriculum is designed to prepare students for higher education by providing a foundation in computer science, fostering a scientific approach, and encouraging research activities. The focus is on understanding the core concepts and methods of computer science, both scientifically and technically.

Core Concepts

The curriculum revolves around four fundamental concepts and their interactions:

  • Data: Representing diverse information (text, images, sounds, measurements, monetary values, etc.) in a unified digital format.
  • Algorithms: Abstract and precise specifications of data processing using elementary operations.
  • Languages: Translating abstract algorithms into textual or graphical programs executable by machines.
  • Machines and Operating Systems: Executing programs by sequencing simple instructions, storing data, and managing communications, including connected objects and networks.

A key transversal element is interfaces, which enable communication with humans, data collection, and system control.

Skills Development

The course aims to develop the following skills:

  • Analyzing and modeling problems in terms of information flow and processing.
  • Decomposing problems into sub-problems, recognizing previously analyzed situations, and reusing solutions.
  • Designing algorithmic solutions.
  • Translating algorithms into programming languages, specifying interfaces and interactions, understanding and reusing existing source code, and developing debugging and program validation processes.
  • Utilizing relevant concepts and technologies for information acquisition, storage, processing, and dissemination.
  • Developing abstraction and generalization capabilities.

Project-Based Approach

At least one-quarter of class time is dedicated to designing and developing projects in groups of two to four students. These projects are crucial for understanding computer science and acquiring practical skills. Projects can address issues from other disciplines and focus on designing solutions for specific needs. Student choice in project themes is encouraged. Examples include:

  • Theoretical deepening of studied concepts.
  • Applications in other disciplines (e.g., experiment simulation, socio-economic data analysis).
  • Lexicography software development.
  • Projects involving connected objects or robots.
  • Designing libraries implementing complex data structures.
  • Image or sound processing problems.
  • Mobile applications (e.g., virtual or augmented reality).
  • Website development with database integration.
  • Mini-language interpreter creation.
  • Strategy game programming.

Project management includes milestones for review with the teacher, validation of elements, progress monitoring, and objective adaptation to maintain student motivation. Projects should remain manageable to ensure completion.

Implementation

Practical activities and projects require individual student access to internet-connected equipment. A user-friendly, interpreted, concise, free, multi-platform programming language with rich libraries and a large educational community is preferred. Currently, Python 3 (or higher) is the chosen language, although expertise in a specific language is not a primary learning objective.

Curriculum Elements

The curriculum is structured around eight themes, which are not meant to be taught in isolation but rather interwoven to highlight their interactions.

1. History of Computer Science: This transversal theme is integrated into the other seven, exploring the historical development of computer science concepts and the individuals who shaped them.

2. Data Representation: Basic Types and Values: Covers how computers manipulate data at the bit level, encoding basic data types (integers, floats, characters, strings), and how encoding affects memory size.

3. Data Representation: Constructed Types: Introduces constructed types built from basic types, including tuples, records (collecting values of different types in named fields), and arrays (allowing calculated direct access to elements). Python terminology is used.

4. Data Processing in Tables: Focuses on data organized in tables as lists of named tuples with shared descriptors. This prepares students for the concept of databases, which will be covered later. Double-indexed arrays or tuple arrays are used within a standard programming language, not a database management system.

5. Human-Computer Interactions on the Web: Explores how users interact with machines through web pages, focusing on event management associated with graphical elements and algorithmic methods. The client-server dialogue is revisited with simple examples, identifying client requests, server calculations, and server responses processed by the client. An exhaustive description of available elements or expertise in languages like PHP or JavaScript is not required.

6. Hardware Architectures and Operating Systems: Explores the architecture of machines and their operating systems, including electronic circuits, networks, and operating system functions (program execution, input/output, power management). The role of sensors and actuators in input/output devices (keyboard, graphical and tactile interfaces, physical measurement devices, machine controls, etc.) is also covered.

7. Languages and Programming: Introduces Turing-complete programming languages and their characteristics, emphasizing the importance of specification, documentation, testing, and modularization for code reuse and library development. Simple programs written by students require concise but precise specifications.

8. Algorithmics: Introduces the concept of algorithmic methods, studying classic algorithms and their costs, particularly with large datasets (preferably open data). The importance of proving algorithm correctness and termination is highlighted using simple examples of loop invariants and variants.

Congratulations, you are the winner for the week! 
We will be in touch via email!
Thank you for your participation!
Try again next time. Follow us on social media to know when the next hunt is!
You’ve found the monster!
Find two more.
You’ve found the monster!
Find one more.