Generic program example: the full name of CS50 CS50 is
Introduction to Computer ScienceIt is a general idea of Harvard University.
Open a notebook on edx, anyone can repair it, or even some TA to help you transform your career (only program production, excluding other topics such as compile-based production)
For the first time I heard about CS50, this article titled CS50: a "hard nut" that has been selected by more than 800 Harvard students. what is the charm of CS50?
It was not until after the repair was completed recently that we knew where the damage was.
Let's answer the question: Program programming like a sea. Why is the ocean? because of the following issues:Deep and Deep
How deep is it? I remember every example of Cheng's career and career. if you have any background in your work, you will know what I'm talking about.
Zeroth percentile
Binary bitwise, ASCII, RGB, binary search
Introducing the basic program statement: condition determination, change number, circle, comment column, and function
Tutorial: use scratch to compile a program
First region
Start to explain the C statement and explain the compile concept.
Describes various types of operators, such as double, float, int, bool, char, long...
Introduce floating point data difference and overflow
Teach you basic command line operations, such as mv, ls, cd, make, etc.
Homework: compile a simple C program (circled to print stars)
Second Region
Specify function, string, array
And how to use argc and argv compaction to import data
Encryption is also available, such as RSA.
Taught command line Redirecting (>) and Pipe (|)
Industry: String Processing, simple encryption and decryption
Third Region
Search, sort (bubble, insert, select, fast sort, merge), big O
Batch commit and bit operations
Use of GDB
Homework: sorting of O (n ^ 2) and binary search
Fourth region
Explain the problem again
String, index, struct, bitmap format
Processing (fprint/fopen ...)
Malloc, memory allocation
How to use xxd to view the hex
Tutorial: Give you bitmap header files to process bitmap images. for example, enlarge them by two times.
Fifth Region
In-depth understanding of the reporter's experience and goals
Information structure: linked list, queue, stack, tree, BST, tries, and hashmap teach you how to use wget to capture the upload case and how to compile Makefile
Homework: implement dictionary embedding or hashmap
Sixth Region
At the beginning, the website is related to the network, including IP and IPv6.
Domain, nslookup, traceroute, packet
Ports, dns, vpn, http, request, response
Teach you how to use chmod to modify the legal privilege and curl to capture the website
Tutorial: use C to upload an http server (partial functions)
7th percentile
Chrome dev tool, such as html and request
Basic html and css teaching
Php introduction
Get/post statistics
SQL basics
How to use apt-get security kits
Homework: complete the simple php website and access to information
Eighth Week
Shows how to rebuild the program and understand the concept of MVC.
Teach basic SQL syntax
SQL Injection
Industry: a string of Google Map APIs, using jQuery and ajax to make highly interactive websites
Ninth percentile
Introduction to javascript syntax
Parse in json format
DOM model
Event handler, event mechanism
(Since then, there has been no job)
10th percentile
Information security and privacy rights
Like password encryption security (encryption algorithm, salting)
Smart computers
Alimail
Two-factor authentication
Cookies, sessions, and https
It also gave me a little bit of speech recognition, just like how siri backs up.
11th bytes
Introduction between AI and no-person vehicle
It is mentioned that:
Dfs, bfs
Minimax
Evaluation function
Alpha-beta pruning
Ai features of different regions
I also learned a little about machine learning, such as how netflix pushes videos to users.
12th bytes
The entire failover process, coupled with everyone playing a little bit of attention, does not have any programming procedures.
When I was doing this operation, I was just waiting.
Wow! How to compile Makefile, and how to use xxd to view the upload case, or even give you bitmap files. you need to extract the Upload file in this format, then zoom in and then click back!
My most failed job is the http server, because I want to use C for string processing...
From the introduction of the 12th anniversary above, we will know that this story is true.Deep and Deep
After completing the course, you can learn:
- Basic skills of programming: change data, train columns, judgment, circle, and function
- You learned the target!
- Directly operate the notebook to understand what the computer base is doing
- Familiar with basic sorting algorithm and data structure
- The use of various command line commands (I think this is more practical)
- Basic network knowledge (ip, dns, server, port, request, response ...)
- Post-end program comment php
- Front-end html/css/javascript
- Usage and instructions of mysql
- Data security (encryption and decryption, SQL injection, buffer overflow)
- Machine learning, artificial intelligence, and speaker recognition
I have always been a self-learning program. After I went to college, I was able to learn the program-related procedures.
However, they are all just doing something else. they didn't learn too many things.
But this time I met this story, it really impressed me from the bottom of my heart.
Everything he introduced in his programming is very practical, and some or even others will be used in the near future.
I didn't even use the command line when I was studying it! Because there is no chance to use it.
In addition, although the content of this article has a depth, the old man is humorous when he is on the top of the page. he can make the concept of "birth" very dynamic.
For example, in the binary search method, the old man uses the phone book as an example, and then tore half of it from the middle!
Or when we reach the second stage, there will be several bubbles on the stage. the bright side is 1, and the dark side is 0. in this way, the interaction of the real world deepens the impression.
I am very grateful for some points of attention in the course of teaching.
First, import the cursor from scratch
After completing cs50, I decided to teach people program design, starting with scratch.
Because of its perception, you can clearly see how the program is structured. Moreover, it is fast and has complete internal resources.
If you want to create a role, you just need to drag a role and define the event.
I think 'scratch is the best option for program input.
Second, we need to package the concept that is very difficult to understand first.
For example, it is a string. in C, it is actually char *, or it is a character column formed by char.
But at the beginning, how do you explain to students?
So they just wrote a string type, hid these resources, and waited until they were listed in the lower column, and then told the students again.
Scanf also applies to the concepts of pointer and call by value, which is not necessarily the same at the beginning.
But the program still needs to be written. how can this problem be solved?
Therefore, they are packaged into a GetInt () function, and these operators are blocked.
Third, producer-side IDE
It is not easy to build a development environment
CS50 works with c9 to provide the IDE on idea
You can compile code to check the execution case and use command line to perform operations.
Super convenient!
Last
This example is really hard to understand, but it is also very practical and useful at the same time.
Push to anyone who wants to learn programming