It’s that time of the year!
The NaijaCoder 2024 camp is scheduled to take place in Abuja, Nigeria and Lagos, Nigeria. The Abuja camp is in collaboration with Olumawu School in Abuja. We plan on using their facilities (including classrooms and computer labs) to host the students on a daily basis. At a very early age, my elder sisters and I attended Olumawu School for some time; this is the main reason the headmaster is allowing us to use their facilities — taking advantage of our alumni privileges. The Lagos camp is in collaboration with the AI and Robotics Lab of the University of Lagos, directed by Dr. Chika Yinka-Banjo. I’m very excited to kick off these (and hopefully more) collaborations with the University of Lagos, as NaijaCoder builds more roots within the Nigerian educational system.
Dates (assuming the scheduled protests this August do not disrupt our activities):
- Abuja: 12th of August to the 23rd of August.
- Lagos: 19th of August to the 30th of August
This year, we have secured funding from many organizations who believe in our mission, including:

Also, this year’s MIT Davis Peace Prize was awarded to MIT junior Victory Yinka-Banjo who is using the grant to fund her activities in Lagos for the NaijaCoder 2024 program in Lagos. Congrats Victory! My participation in NaijaCoder remains supported (through a Simons Junior Fellowship grant) by the Simons Foundation. Thanks to all our funders for supporting the next generation of scientists, engineers, mathematicians.
Syllabus Updates
This year, we have updated the syllabus significantly! Day 1, as in last year, would start slow and steady with a keynote by Prof. Jelani Nelson, the founder of AddisCoder (which inspires NaijaCoder) and the lead advisor of NaijaCoder! Then we will introduce them to the main textbook (CLRS) [1]. Then we plan on spending the afternoon going through some basics of the python programming language (including variable naming convention and good commenting practice). Obviously, the plan is not to cover all the basics of computer programming and algorithms in less than a month. But to provide enough material and resources so they can keep learning on their own.
Summaries of NaijaCoder Lectures (Days 2 to 10)
Day 2 Summary: Functions and Modules
- Objective: Understand functions and their importance in programming.
- Topics Covered:
- Defining and calling functions.
- Function parameters and return values.
- Scope and lifetime of variables.
- Lambda functions.
- Creating and using modules.
- Activities: Writing and using functions, creating modules, and hands-on exercises to solidify understanding.
Day 3 Summary: For Loops and Recursion
- Objective: Learn to use for loops and understand recursion.
- Topics Covered:
- For loops: syntax, examples,
breakandcontinue, nested loops,enumerate, andzip. - Recursion: basic concepts, base and recursive cases, examples (factorial, Fibonacci sequence), and performance considerations.
- For loops: syntax, examples,
- Activities: Exercises on for loops and recursion, including practical problems.
Day 4 Summary: Data Structures – Lists and Dictionaries
- Objective: Introduce lists and dictionaries, two fundamental data structures.
- Topics Covered:
- Lists: creation, indexing, slicing, methods (append, remove, etc.), list comprehensions.
- Dictionaries: creation, accessing values, adding/removing key-value pairs, dictionary methods.
- Activities: Practical exercises on using lists and dictionaries to solve problems.
Day 5 Summary: Object-Oriented Programming (OOP) Basics
- Objective: Introduce OOP concepts.
- Topics Covered:
- Classes and objects.
- Attributes and methods.
- The
selfkeyword. - Inheritance and polymorphism.
- Activities: Exercises on creating classes, instantiating objects, and applying inheritance.
Day 6 Summary: Growth of Functions
- Objective: Understand the growth of functions and asymptotic notation.
- Topics Covered:
- Growth functions (linear, quadratic).
- Asymptotic notations: Big O, Omega, Theta.
- Practical use in algorithm analysis.
- Small o and omega notations.
- Activities: Exercises on identifying and verifying notations and matching functions with appropriate notations.
Day 7 Summary: Searching Algorithms
- Objective: Learn basic and efficient searching algorithms.
- Topics Covered:
- Linear Search: Simple sequential search with time complexity (O(n)).
- Binary Search: Efficient search on sorted lists with time complexity (O(\log n)).
- Activities: Exercises on implementing linear and binary search, counting occurrences, and finding elements.
Day 8, 9 Summary: Sorting Algorithms
- Objective: Learn various sorting algorithms.
- Algorithms Covered:
- Bubble Sort: Simple but inefficient for large datasets.
- Selection Sort: Inefficient but easy to implement.
- Insertion Sort: Efficient for small or nearly sorted datasets.
- Merge Sort: Efficient and stable, suitable for large datasets.
- Quick Sort: Efficient and in-place, often faster than Merge Sort in practice.
- Activities: Implement and compare these sorting algorithms.
Day 10 Summary: Recap, Exams, Review, Awards
Looking forward to the camp!
[1] “Introduction to Algorithms” by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein.