Want to be a world class software developer? Apply to the Andela Fellowship.

Andela Home Study

Have feedback for us?

Home Study

The home study curriculum from Andela is here to help you build a solid foundation in programming.

The curriculum includes everything that’s required to fully grasp the fundamentals of computer science, and gain a thorough understanding of computer science best practices through Python. By covering this curriculum, you will be comfortable with computing concepts -- empowering you to engage with a vibrant community of like-minded learners with all levels of experience.

The curriculum is available for download here and can be engaged with offline.

NB: The Python programming examples in the resources below can be tested on Learn Python.


Curriculum

Module 1 - Introduction to Computer Science

Overview

In this module, we will introduce basic computer science concepts. We will cover all the areas required to get you to the point of understanding what a computer scientist does.

Learning Objectives

By the end of this module, you should be able to understand:

  1. What computer science is.
  2. What a computer scientist does.
  3. Basic computer science vocabulary.
  4. The core concepts in computer science.

Resources

Resource Name Objective Coverage
What is computer science 1
Intro to the art of computer science 1, 2, 3
40 key computer science concepts explained in layman terms
(NB: This link contains reference materials that can be viewed for further reading)
3, 4

Module 2 - Introduction to Programming

Overview

Computer programming is the act of writing a sequence of instructions to a computer to perform a specific task. This module will cover the basics of programming and provide an overview of computer programming.

Learning Objectives

By the end of this module, you should be able to understand:

  1. What programming is.
  2. Identify basic elements in computer programming.
  3. The Python programming language.
  4. Variables, data types and control structures in Python.
  5. Functions and modules in Python.

Resources

Resource Name Objective Coverage
What is Programming?
Computer Programming overview
Computer Programming Basics
1
Computer Programming Environment 2
Codecademy Python Course
Google Developers: Python Introduction
Recap of Python essentials
3, 4, 5

Module 3 - Object Oriented Programming

Overview

Object oriented programming is a paradigm and a way of thinking that helps programmers effectively model real-life scenarios. In this module, we will cover general OOP concepts and OOP in Python.

Learning Objectives

By the end of this module, you should be able to understand:

  1. Object oriented programming concepts, classes and objects.
  2. Implement object oriented programming concepts in Python.

Resources

Resource Name Objective Coverage
What is Object Oriented Programming? 1
Object oriented programming
Everything I know about Python
Object Oriented Programming in Python
1, 2

Module 4 - Data Structures

Overview

A data structure is a logical concept that introduces a way to organize data so the data can be immediately available to the processor for required calculations. This module will cover ways in which data is stored for efficient search and retrieval.

Learning Objectives

By the end of this module, you should be able to understand:

  1. What data structures are.
  2. How data structures are used.
  3. The different data structure classifications.
  4. Data structures in Python.

Resources

Resource Name Objective Coverage
Introduction to Data Structures
Why data structures and abstract data types?
Introduction to basic data structures and algorithms
1, 2, 3
Codecademy’s Python’s built in Data Structures
Introduction to Data Processing in Python
Advanced Python Data Structures
4

Module 5 - Algorithms

Overview

Computer scientists learn by experience. We learn by seeing other people solve problems and by solving problems ourselves. Exposing us to different problem-solving techniques and seeing how algorithms are designed helps us take on challenging problems.

Learning Objectives

By the end of this module, you should be able to understand:

  1. The principles of algorithms.
  2. The importance of algorithms.
  3. Algorithm analysis.
  4. Algorithms and how they are implemented in Python.

Resources

Resource Name Objective Coverage
Learning algorithms from scratch
Introduction to algorithms
The importance of algorithms
1, 2
What is algorithm analysis 3
Codecademy’s Pythonic Algorithms 101 4

Module 6 - Recursion

Overview

Recursion is a method where the solution to a problem depends on solutions to smaller instances of the same problem. We have seen that functions are named procedures which perform distinct tasks or services. This module will address recursion as a technique involving the use of functions.

Learning Objectives

By the end of this module, you should be able to understand:

  1. What recursion is about.
  2. Types of recursion.
  3. Recursive functions.
  4. When to use recursive functions.
  5. Advantages and disadvantages of recursion.
  6. Difference between recursion and iteration.
  7. How recursive functions in Python are written.

Resources

Resource Name Objective Coverage
Recursion
Working with Recursion in python
1, 7
Recursion and Applicative programming 2
Recursive Functions 3, 4
Python Recursion 3, 5
Iteration vs Recursion 6

Module 7 - Sorting and Searching

Overview

In this module, we will introduce algorithms for sorting and searching.

Learning Objectives

By the end of this module, you should be able to understand:

  1. The importance of sorting and searching in computer science.
  2. Different sorting and searching algorithms.
  3. Implement sorting and searching techniques in Python.

Resources

Resource Name Objective Coverage
Searching and Sorting 1, 2
Sorting, Searching and Algorithm Analysis
The Bubble sort
The Insertion sort
The Selection sort
The Merge sort
The quick sort
The Binary search
2, 3
Basic sorting algorithms implemented in Python 3

Module 8 - Software Engineering

Overview

This module will cover all the phases of software development. Starting from software requirement analysis, to design, to implementation, to testing, to deployment and finally to maintenance.

Learning Objectives

By the end of this module, you should be able to understand:

  1. What software engineering is about.
  2. What a computer software engineer does.
  3. The two main branches of software engineering.
  4. The software development life cycle.
  5. The different software development paradigms.

Resources

Resource Name Objective Coverage
Software engineering overview 1
What does a Computer Software Engineer Do? 2, 3
Software Development Life Cycle Overview 4, 5

Module 9 - The Internet

Overview

In this module, we will cover what the internet is and how it works.

Learning Objectives

By the end of this module, you should be able to understand:

  1. What the internet is.
  2. How the internet works.
  3. Basic internet tools or concepts.
  4. Networking.
  5. The World Wide Web.

Resources

Resource Name Objective Coverage
What is the internet 1, 3
How the internet works: An explanation even non-techies can understand
How does the internet work(simple version)
2, 3
Basic Internet tools
What is the email
3
Networks
A simple introduction to computer networking
4
How the world wide web works 5

Module 10 - Web Programming

Overview

This module will cover the fundamentals of web programming and technologies used in programming web pages.

Learning Objectives

By the end of this module, you should be able to understand:

  1. Basics of HTTP.
  2. Use HTML and CSS to create web pages.
  3. Use Javascript to create interactive web pages.
  4. Basics of MVC.

Resources

Resource Name Objective Coverage
Http - A protocol every web developer must know part 1 1
HTML(5) Tutorial
CSS Tutorial
HTML/CSS course
2
Javascript Tutorial
Javascript course
3
Model-View-Controller(MVC) Explained with Legos 4