Skip to content

Latest commit

 

History

History
105 lines (67 loc) · 7.2 KB

README.md

File metadata and controls

105 lines (67 loc) · 7.2 KB

Computer Science Guide

About Coding you should know

The first important thing is that Coding is about expressing your idea about how you solved problems and getting a machine to understand your solving steps.

A Programming language is a kind of language that helps you communicate with computers or other machines. It is similar to human languages, such as Chinese and English. They both have basic parts and rules.

My Russian groupmate told me the most important thing about speaking English is that you should express yourself clearly. So I think the rule is the same when using any programming language.

Your native language decides the highest level of your expressive ability. Your second language would be less possibly improved better than your native language. So, your programming language would not be able to express more clearly than your native language.

All you can do is gain the ability to use a programming language that allows you to express yourself as clearly as your native language.

For me, programming is just another kind of writing.

Therefore, a tip is when you get bored with the programming language. You should practice your writing skills in the human language. This will indirectly help you with your coding ability, especially writing an argument.

The second thing you need to know is that the computer's instructions are running continuously, even if it can jump to another instruction.

Its instructions always execute consecutively. With an understanding of this mechanism, you should think consecutively. Because many people are divergent thinkers, they used to thinking in leaps and bounds. Especially for people who work in a major like the arts and other professions.

So, if you are good at math, especially discrete math, and are good at logic, it's easy for you to communicate with a machine by programming language. Of course a good native language expression is required, which I mendtioned above.

Consecutive logical thinking is the second most important thing. You should solve a problem step by step. Of course, you can have a big vision of your design, and you can divide the problem into smaller problems. But to implementing the details, you alwalys have to take on step at a time.

That's why learning discrete math is the first step that is often neglected by many students, another important course besides Programming language and Data Structure and Algorithms.

Leetcode

You should choose a language that makes you comfortable. I always recommend Python, it is beginners friendly.

There are two types of languages. Compiler languages, such as C, C++, Java, C#, etc. Scripting language such as Python, Javascript, etc.

There is no such thing that is always easy. In my experience, when you start easy, it would be hard in the future. But when you start hard, it would be easy in the future. It's just a balance of the world. Difficulties just appear in different stages of time.

So compiler language is a tough start for beginners but will be easy in the future, and it's easy to maintain in a big project. However, a scripting language is an easy start, but it's hard to maintain for a big project that requires cooperation with others.

One rule of learning is that you should start with easy jobs, and little medium difficult jobs. Then you can practice and improve.

This rule can be applied to solving Leetcode problems. You should start with easy problems. When you feel a bit comfortable, you can add medium problems. And so on.

Some people asked me if he should solve problems by category or by problem ID.

In my opinion, solving problems by category is easy because you can solve similar problems with similar knowledge. But the negative result is that you may remember the answers and the coding templates. It's not good for you to solve a problem that you have not encountered before.

So I choose to solve problems by id, I can keep my brain active.

You shouldn't rush do coding. Think first and try to solve it with your brain and your hands.

if you can write down the steps on a small example of the problem about how you solve the problem with your brain. This will be a good start to solving this problem.

When you understand how you think out each step through your brain. The next step is to translate the expressions into a programming language.

You'll never be able to solve a problem just by coding if you can't solve it use your brain.

Always think critically about each step. It needs to be well thought out and know all the possibilities for each step.

About programming language

After getting the answers to questions blow, you can start programming and solving problems in any programming language.

(ps: this order is basically from https://docs.python.org/3/tutorial/index.html , you can click links above directly.)

The Next thing you need to know is the type of variable: Value types and Reference types, then the scope of the variable. This will help you prevent some simple mistakes when coding.

One thing you should know is that you will never be well prepared.

So after having a little preparation, go for it. Getting started is often the hardest part of all problems.

course

I have divided courses in Computer Science for graduates in Santa Clara University into following categories.

Base courses:

Programming language、Discrete math (AMTH 240)、Abstract Data Types and Data Structures (COEN 912C)、Design and Analysis of Algorithms (COEN 279).

(ps: with the basic courses, you can start to solving Leetcode problems.)

Application courses: (depend on your interests)

for web backend direct

  • COEN 278. Advanced Web Programming
  • COEN 235. Client/Server Programming
  • COEN 280. Database Systems
  • COEN 272. Web Search and Information Retrieval

Other

  • COEN 268. Mobile Application Development
  • COEN 290. Computer Graphics
  • COEN 225. Secure Coding in C and C++

Advanced course:

  • COEN 275. Object-Oriented Analysis, Design, and Programming
  • COEN 283. Operating Systems
  • COEN 259. Advanced Compilers Design
  • COEN 210. Computer Architecture
  • COEN 233. Computer Networks

About your resume

You should make an appointment with your university's career center. They can provide services such as resume or cover letter or LinkedIn Support, as well as career coaching.

First, you should have a master version of your resume. Then you should customize your resume to match the job description that you plan to apply for. Experiences or Skills that not related to the job requirements would be a distracting to the viewer, and may even cause a annoying feeling.

Regarding your information on LinkedIn, it should be consistent with your resume.