You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Dec 1, 2022. It is now read-only.
This Module introduces you to CS50x and gives you the foundation you’ll need before you start programming. You will be introduced to binary counting, algorithms, and additional concepts you’ll need to begin thinking like a computer programmer. By the end of the module, you will be familiar with pseudocode, and a graphical language called Scratch, which you'll use to complete Problem Set 0.
You will write your first lines of code using a programming language called C. To do that, you'll be introduced to CS50's integrated development environment (or "IDE"), which is where you'll be writing code for remainder of the course. You will also dive more deeply into some of the concepts discussed in Module 0 such as loops, conditionals, variables, and functions - except using C instead of Scratch. In Problem Set 1 you will use loops to draw a picture made of '#' characters on the screen, and do some other problems involving basic arithmetic.
Module 2 continues our whirlwind tour through the fundamental constructs of programming in C. You'll be introduced to some new data types including chars and arrays, learn more about strings, and learn how to write programs that accept command-line arguments. In Problem Set 2, you will create programs to encrypt and decrypt secret messages!
Module 3 is all about analyzing and improving the performance of algorithms. You'll also be introduced to a beautiful and mind-bending concept called recursion. Additionally, we will go back and review some of the topics from Modules 1 and 2 to reinforce your comfort with those concepts. In Problem Set 3, you'll implement an algorithm to sort a very large list very efficiently, and another algorithm to search quickly through that list to find a "needle in the haystack".
This is the point when you will tackle more advanced concepts in the C programming language. In Module 4 you will learn much more about where and how data is stored in the computer's memory, and how to leverage and manage your program's use of that memory using pointers and dynamic memory allocation. Additionally you'll be introduced to structs, a high-level data structure to define groups of data, and file i/o, the process by which a program can read and write data to and from an external file. In Problem Set 4, you will perform "digital forensics", sifting through the raw data of a digital camera to recover its deleted (top-secret) images.
You will start off with a review of pointers and memory, and then learn about data structures that will allow you to develop more complex programs. There are some limitations to the arrays that you have already learned about, and these new data structures-- Linked Lists, Stacks, Queues, Trees, Tries and Hash Tables-- will help you to store and manage your data in novel ways. In Problem Set 5, you will leverage the power of these data structures to write a lightning-fast algorithm to search through a giant dictionary of words.
Spring Break!
Module
Start Date
Overview
Spring <br>
TBD
No class on Tuesday the 15th and Thursday the 17th.
You are going to transition to Web Programming in this module. You will discover the inner-workings of HTTP and TCP/IP, internet protocols whose mysterious acronyms you are probably familar with. You will also be introduced to HTML, the markup language used to create web pages. Finally, you will learn about web servers (programs that serve up web pages). In Problem Set 6, you will write your own web server in C.
On the homestretch now! You begin your journey with an introduction to PHP, a programming language often used for back-end web programming, to create dynamically generated HTML content. You will also learn how to make your website store and retrieve data from a database using a language called SQL. Finally, you will learn how to use the MVC paradigm to write more eloquent and reusable code. In Problem Set 7, you will make a website that allows user to manage a finance portfolio, buying and selling (imaginary) stock in real companies.
In the last module you’ll learn yet another language, Javascript, which runs on the front-end in the user's browser, and allows you to manipulate your page’s HTML without talking to the server. You’ll also learn a technique called AJAX, which, using fancy work with functions, allows your page to communicate with the server and update itself without ever needing to refresh. Finally, you’ll learn about security on the web. In Problem Set 8, you will create a geographic news feed, a page on which local news headlines are overlayed on top of an interactive map of the US.