The full name of CS50 is
Introduction to Computer, is a knowledge course at Harvard University
There are classes on edx, anyone can fix it, and even a TA will help you change your career (only in the program, not the other kind of paper industry)
The first time I heard of CS50 this lecture was from this newspaper: CS50: What is the charm of a "hard class" that has over 800 Harvard students chosen?
It was not until recently that the course had been completed that I knew where the lesson was.
Start by answering the title's meaning: like the ocean-like programming curriculum. Why is the ocean because of this lesson: Deep and square
How Deep Is it? I remember every week of the course big synopsis with the job, please you have a background of a friend to see, you will know what I am saying
0th Week
Two-step, ASCII, RGB, binary search method
Introduction to BASIC programming language: conditions, variables, loops, arrays, functions
Business: Write a program with scratch
First week
Start with the C language, and the interpretation of Compile's observations
Introduce various shapes, like double, float, int, bool, char, long long ...
Introduction to floating point error and overflow
Teach you command line basic operations, such as MV, LS, CD, make, etc.
Business: Write a simple C program (loop prints the Stars)
Second week
Intro function, String, array
And how to use ARGC, argv to enter the parameters
And we're talking about encryption, like RSA.
Taught command line's redirecting (>) and Pipe (|)
Industry: Strings handled, simplified and decrypted
Third week
Search, sort (bubble, insert, select, Quick Row, merge), Big O
Recursive, bit operation
Use of GDB
Industry: actually O (n^2) Sorting and binary search
Four weeks
Once again, the recursion
string, target, struct, bitmap format
File Management (Fprint/fopen ... )
malloc, memory allocation
To show you the hex of the file with Xxd.
Business: give you bitmap header file, deal with bitmap picture, for example enlarge twice
Five weeks
In-depth interpretation of memories and targets
Information structure: Linked list, queue, stack, tree, BST, tries, HashMap teach you how to use wget files and how to write Makefile
Business: Actually as a dictionary tree or HashMap
Six weeks
This week starts with the internet, including: IP, IPV6
Domain, nslookup, traceroute, envelope
Ports, DNS, VPN, HTTP, request, response
Teach you to use chmod to change your file rights, and curl to grab Web pages
Industry: Write an HTTP server with C (partial function)
Seventh Week
The Chrome dev tool is used like HTML, request
Basic HTML and CSS teaching
PHP Simple
Get/post references
Basic SQL Science Teaching
Teach you to use the Apt-get installation Kit
Work: Complete the simple PHP web and communicate with the information repository
Eighth Week
Show the refactoring code to understand MVC
Teach basic SQL Language method
There is an introduction to SQL injection
Business: Google Map API, using jquery and Ajax to make a more interactive Web page
Nineth Week
JavaScript language Simplified
JSON format solution
DOM model
Event handler, Incident machine
(No business since this week)
Tenth Week
Explore information security and privacy
Like password security (encryption algorithm, salting)
Smart TV
Fishing-Fish Letter
Two-factor Authentication
Cookies, Session, HTTPS
I also talked a little bit about language recognition, like the principle behind Siri's back.
11th Week
Introduction to the game AI and the car
There are references to:
DFS, BFS
Minimax
evaluation function
Alpha-beta Pruning
Ai Characteristics of different games
And a little bit of machine learning, like how Netflix can recommend videos to users
12th Week
The whole course of the trip plus everybody play a little game this week no lesson
When I was doing this class, I was amazed.
Whoa, shove! Actually teaches you how to write Makefile, also teaches you to use the XXD to look at the file case, even gives you the bitmap document, wants you to follow these formats to read the picture to take out, then enlarges afterwards writes back!
Write to my most bulb of the job is the HTTP server that, because to use C to do string management ...
From the above Yangyang sprinkled sprinkled 12 weeks of class durations, I know this course is really deep and broad
A little tidying up, you can learn after you finish:
- The basics of programming: variables, arrays, sentences, loops, functions
- You learned the point!
- Work directly with the memory to understand what's on the computer floor
- Familiarity with basic sequencing algorithms and information structures
- The use of command line commands (I think this is a bit of a super-practical)
- Basic knowledge of the Internet (IP, DNS, server, port, request, response ...) )
- Backend Programming language PHP
- Front Html/css/javascript
- Information about MySQL usage and instructions
- Information security (plus decryption, SQL injection, buffer overflow)
- Understanding of machine learning, artificial intelligence, and language knowledge
I've always been a self-taught programmer, though I've had a couple of program-related lessons after college.
But it's all just a little bit of a learning thing.
But this time I met this class and really let me praise sighs from the bottom of my heart.
Each of the things he Yi in his course is very practical, and some of them are even more recent.
I didn't even use the command line since I was a student! Because there's no chance to use it.
Besides, despite the depth of the lecture, the teacher is humorous when he is in class and can talk about the concept of living Shibuya.
For example, the second search method, the teacher took the telephone book as an example, and then directly from the middle of tearing half!
or up to two, there are a few lights on the stage, the light is 1, the dark is 0, with this physical interaction to deepen the impression
In the course of teaching, there are a few points that I am very pleased with.
First, enter from scratch
After finishing the CS50, I decided to teach the programming, all to start with scratch.
Because it's visually conscious, you can clearly see how the program is structured, and it's fast and the internal resources are intact.
You want to be a game, drag a few characters, define the event.
I think ' scratch is the best choice for the program.
Second, the concept of a very difficult to understand first packaging
Like a string, in C it's actually char*, or a char-formed array.
But how are you going to talk to the students at the beginning?
So they wrote a string of type out, hid the information, and waited until the end of the array to talk to the students.
And scanf, it towed the concept of pointer and call by value, which does not fit in the beginning
But the program has to have the input, how to do?
So they wrap them up in a GetInt () function and seal them up.
Third, the cloud-side IDE
It's not easy to build an environment.
CS50 works with C9 to provide the online IDE
You can write code, you can see the file, you can use command line, all the work is done on it.
Super Convenient!
The last
This class is really a hard lesson, but it's also a very Zashi and useful lesson.
Recommended to anyone who wants to learn to write a program