GithubHelp home page GithubHelp logo

computer-science-curriculum's Introduction

Computer Science Curriculum

Computer Science fundamentals are important because it's better to understand something based on first, basic principles. Before you dive in, you should know a few things:

  1. These are fascinating topics that I really hope you enjoy learning about. It's hard, but totally worth it!
  2. Most of this will be useful in the job interview process.
  3. You don't need a computer science degree to learn about computer science.

Finally, it's appropriate to take 10 minutes to explore the history of computer science and programming in general with the Art of Writing Software.

Overall Standards

  • Analyze an algorithm and identify the Big O
  • Identify and diagram common data structures
  • Implement common algorithms and describe more complex algorithms
  • Implement, evaluate, and use some common data structures

Unit 0: Memory Fundamentals

Standards

  • Identify and diagram common data structures

Objectives

  • Define and describe the purpose of Heap, Stack, Threads, Bits, Bytes, and Garbage Collection
  • Represent "static" objects, arrays, functions, and variables in diagrams
  • Explain the difference between mutable values and immutable values
  • Interpret unsigned binary integers
  • Describe UTF-8 and ASCII, including the differences between the two

Lessons

Unit 1: Algorithms Fundamentals

Standards

  • Analyze an algorithm and identify the Big O

Objectives

  • Define "Abstract Data Type" (ADT) and algorithm
  • Discuss what Time Complexity and Space Complexity refer to and how they differ
  • Describe Big O Notation and identify the complexity of any given function
  • Describe what a pointer is
  • Describe and implement recursive functions

Lessons

Unit 2: Algorithms For Arrays

Standards

  • Implement common algorithms and describe more complex algorithms

Objectives

  • Describe and implement the following search algorithms:
    • Linear Search
    • Binary Search ( also should be able to implement )
  • Describe and implement the following sorting algorithms:
    • Bubble Sort ( also should be able to implement )
    • Selection Sort
    • Insertion Sort
    • Quick Sort
    • Merge Sort

Lessons

Unit 3: Linked Lists and Trees

Standards

  • Implement common algorithms and describe more complex algorithms
  • Implement, evaluate, and use some common data structures

Objectives

  • Describe and implement Singly & Doubly Linked Lists
  • Describe and implement Stacks & Queues
    • Describe the concepts of LIFO & FIFO and give real-life analogies
    • Use stacks and queues to process data
  • Describe the purpose of trees in programming and define:
    • Binary Trees
    • Binary Search Trees
    • Depth First Search ( also should be able to implement )
    • Breadth First Search
    • Pre-order, In-order, and Post-order Traversal

Lessons

Additional Resources

Unit 4: Graphs

Standards

  • Implement common algorithms and describe more complex algorithms
  • Implement, evaluate, and use some common data structures

Objectives

  • Define and describe the relationships depicted in a Graph
  • Implement graphs using different representations
    • Adjacency matrix
    • Adjacency list
    • Edge list
  • Implement BFS and DFS on graphs
  • Describe Dijkstra's algorithm and A*

Lessons

Unit 5: Hash Tables

Standards

  • Implement common algorithms and describe more complex algorithms
  • Implement, evaluate, and use some common data structures

Objectives

  • Define a hash function
  • Describe when to use hash tables instead of arrays

Additional Resources

Running The Exercises

The exercises in this curriculum can be run individually, or as a large group. To get an idea of where you are in the overall curriculum, run them all by cding into the Exercises/ directory and running mocha. Note: you might have to make sure your node --version is 6.0.0 or later.

cd Exercises
node --version
npm install
mocha

To run individual groups of exercises, you can type the name of the script after mocha.

mocha test/linked-list

That command will run all the tests in the linked-list folder. To run a single test suite, you can use mocha with the file path:

mocha test/linked-list/singly_linked_list.test.js

computer-science-curriculum's People

Contributors

tebba-von-mathenstein avatar mjhea0 avatar mmmaaatttttt avatar samusgray avatar w3cj avatar tigarcia avatar elie avatar ctide avatar nax3t avatar lizthedeveloper avatar themattwilliams avatar bwreid avatar craftninja avatar jaglawson3 avatar jlincolndennis avatar nmuta avatar parkerlewis9 avatar robhaj avatar summerwollin avatar willyschu avatar zubaird avatar

Watchers

James Cloos avatar Austin Mahan avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.