Giter Site home page Giter Site logo

sshakor / aftercsintro Goto Github PK

View Code? Open in Web Editor NEW

This project forked from s7oev/aftercsintro

1.0 0.0 0.0 8 KB

Finished with your first programming course and not sure how to go on? The Stanford Code in Place team shares a roadmap with what courses to follow and where to find information about them

aftercsintro's Introduction

Finished with your first programming course and not sure how to go on? The Stanford Code in Place team shares a roadmap with what courses to follow and where to find information about them

Read this first: I was a Section Leader for Stanford's Code in Place course (a free online offering of (part of) their intro to CS course as a way to support the community during COVID-19). The course finished, and one of the professors behind it: Ali Malik, shared this roadmap for how to proceed. It is the result of a shared effort of the people behind the course. Keep in mind that I have not made any changes to the original! So there's plenty of references to the Code in Place course. Just imagine it says "your first programming course" instead and read on :) And also, this was reposted with Ali's consent!

Life after Code in Place

Having completed Code In Place, there are many paths you might choose to take: this handout is intended to provide a possible roadmap for some of them. Like all guidelines, this is an approximate and non-exhaustive list on how to learn about a subject. There are a plethora different ways to achieve mastery that might not be represented here.

We have split up this resource into umbrella topics that students have been asking about. In reality, there are a lot more ways to apply Computer Science, such as music, healthcare, social good and education.

Each area has a list of core topics you need to understand to engage with meaningfully with that discipline. After you develop a solid understanding of these core topics, you can pick and choose whatever subareas you find interesting and focus there.

If there is any topic not covered here that you are interested in, ask about it in the comments! We will try to answer those as well.

How to use this resource:

Since we can’t cover the vast range of possible material in the world, most of the resources linked below are websites of university courses that cover the relevant concept. This doesn’t mean you have to take the academic course to learn that material. Instead, the course syllabus can serve as a reference point for which topics are important to cover. You can then go about actually learning these topics however you want. Some potential ways to learn could be to search for the topic on google or youtube, read textbooks, or browse reddit.

Foundations of CS

These are major concepts that are important to solidify, irrespective of what area of CS you are interested in. It consists of all the foundational concepts: programs, variables, loops, conditions, data structures, and core algorithms.

CS106A:

You have done most of this! Congrats :)

CS106B:

Stanford’s sequel class to CS 106A. In CS 106B, you further develop your toolkit by deepening your understanding of how a computer represents data and learning about additional problem-solving techniques and structures. The class is taught in C++, one of the most popular programming languages in history.

Course website: http://web.stanford.edu/class/cs106b/

Old recorded lectures: https://see.stanford.edu/Course

Area Specific Paths

Data Science, AI, and ML

Core:

AI/ML:

Systems

Core:

  • Computer Architecture and Systems (CS107 website and videos)
  • Principles of Systems (CS110)

Graphics/Game Design/VR

Core:

Areas:

  • 2D/3D Graphics, rendering, animation, geometry (CS248)
  • Virtual Reality (EE267)
  • Animation and Simulation (CS348C)
  • Introduction to Game Design and Development (CS146)

Web dev (frontend/backend)

Web development is how we make websites and online applications to do useful things. It consists of two major areas.

Frontend: This deals with everything related to what a website user can see and interact with such as the design, style, menus, text, images, etc.

Backend: This deals with everything that has to do with all the logic and internal working of a website that is not typically visible to a user. This is stuff like storing data in databases, making a server, authentication, creating users, generating dynamic pages, etc.

These resources will generally cover both frontend (HTML, CSS, javascript) andbackend programming:

Mobile dev

  • iPhone: any Swift resources provided by Apple
  • Android: any Kotlin resources provided by Google

General Resources

Programming Tools

  • One of the most wonderful things about the field of Computer Science is how collaborative and open a field it is. This is enabled by websites like Github, GitLab and BitBucket, in which programmers can share and work together on their code. Underlying each of these websites is a system called Git, which allows you to manage the different versions of your program with minimal fuss. Learn the basics of Git using Github’s tutorial, or BitBucket’s help center. Some SLs wrote up really great intros to Github. See this ed post and this other video!
  • In addition to PyCharm and Ed, there are countless other editors and IDEs, each with their own strengths and which can be customized for your purposes. Two of the most popular editors are Visual Studio Code and Sublime Text.
  • As you work on projects of your own, you are bound to run into bugs. Stack Overflow is a question & answer forum that is probably the single best resource on the internet to get advice on resolving bugs.

Other Programming Languages

Python is a wonderful language, but there are many other wonderful languages you might be interested in learning:

  • HTML, CSS and Javascript are the best tools for developing internet-based application. Mozilla’s resources are a fantastic introduction.
  • C and C++ are two of the most commonly used programming languages, and are great for programmers who want more direct control over what their computers are doing. You can learn C++ from a combination of CS 106B and CS 106L, and you could learn C here.
  • Rust is a more recent language that also affords programmers very low-level control of their computers.
  • Java and Go are great choices to build systems that must handle large amounts of data.
  • Haskell, Scala, and OCaml are programming languages that promote a style of programming known as functional programming, which often is enormously helpful in processing data and is a fascinating intellectual endeavour.

Tech Interviews

Interviews for tech internships and jobs are kind of their own skill that really gets better with practice. These are some good resources to practice for tech job interviews. Remember, you don't want to be memorising these answers. Instead you want to develop your computational thinking so that you can figure out these answers on the spot!

Collection of Resources by SLs

These are a collection of various resources contributed by the section leaders of Code in Place. They aren’t structured in any particular way but they might serve as a useful reference for you!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.