This GitHub repository contains my mini projects for Rice University's Fundamentals of Computing specialization on Coursera, which are listed below. Please also check out my website about this course Learning Programming with Fundamentals of Computing!
This seven-course specialization covers much of the material that first-year computer science students learn at Rice University. Throughout the specialization, students build over 20 projects and learn programming skills and computer science concepts using the Python programming language. Here are some of the concepts covered in this comprehensive computer science specialization:
- Introduction to Interactive Programming in Python: This two-part course introduces the basic elements of programming. Topics covered include:
- Statements, expressions, variables
- Functions, logic, conditionals
- Event-driven programming, local/global variables
- Lists, dictionaries, sets
- Classes and object-oriented programming
- Debugging and visualization
- Creating interactive applications in Python
- Principles of Computing: This two-part course builds upon the programming skills learned in Introduction to Interactive Programming in Python. It also introduces the basic mathematical and programming principles that underlie much of Computer Science. Specifically, it covers the following:
- Coding style and standards
- Testing
- Plotting and grid representation
- Probability and randomness
- Combinatorics
- Generators
- Counting
- Growth of functions
- Higher-order functions
- Data structures (stacks and queues)
- Inheritance
- Searching (DFS, BFS)
- Recursion and reucrrence relations
- Trees
- Lambda functions
- Assertions and invariants
- Algorithmic Thinking: This two-part course trains students in the mathematical concepts and process of algorithmic thinking, allowing them to build simpler, more efficient solutions to computational problems. Topics covered include:
- Sorting
- Searching
- Graph Theory
- Clustering
- Big-O Notation
- The Master Theorem
- Closest pairs of points
- Dynamic Programming
List of Mini Projects
- Rock-paper-scissors-lizard-Spock
- Guess the Number!
- Stopwatch: The Game
- Pong
- Memory
- Blackjack
- Spaceship
- RiceRocks (clone of classic arcade game Asteroids)
- 2048 (Merge)
- 2048 (Full)
- Tic-Tac-Toe (Monte Carlo)
- Yahtzee
- Cookie Clicker
- Zombie Apocalypse
- Word Wrangler
- Tic-Tac-Toe (Minimax)
- The Fifteen Puzzle
- Degree Distributions for Graphs
- Analysis of Citation Graphs
- Connected Components and Graph Resilience
- Analysis of a Computer Network
- Closest Pairs and Clustering Algorithms
- Comparison of Clustering Algorithms
- Computing Alignment of Sequences
- Applications to Genomics and Beyond