/
after-cs106a.html
100 lines (58 loc) · 11.8 KB
/
after-cs106a.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
<html>
<head>
<title>Opportunities After CS106A</title>
</head>
<body>
<h1>Opportunities After CS106A</h1>
<h3>Multidisciplinary Applications</h3>
<p class="p1">An incredibly exciting area of CS involves addressing major social issues using computer science -- it's absolutely not true the computer science is only useful for doing computer things, or that it means coding in a cubicle all day. A CS background can help you impact almost any field. It gives you a powerful set of tools to apply to other areas, and other interests will make you a better computer scientist. Understanding CS will open doors for you as technology becomes integral to more and more fields, so think about exploring computer science after 106A regardless of your major. After a few years (or even quarters) of studying computer science, you could help <a href="http://www.nytimes.com/2011/12/06/science/david-patterson-enlist-computer-scientists-in-cancer-fight.html"><span class="s1">cure cancer</span></a>, <a href="http://www.khanacademy.org/about"><span class="s1">provide free world-class education to everyone</span></a>, <a href="http://www.nytimes.com/2011/12/06/science/sebastian-thrun-self-driving-cars-can-save-lives-and-parking-spaces.html"><span class="s1">reduce car crash fatalities through self-driving cars</span></a>, <a href="http://www.kiva.org/"><span class="s1">alleviate poverty through micro-loans</span></a>, <a href="http://www.google.org/projects.html"><span class="s1">reconnect families after disasters and find missing children</span></a> (each link leads to a news article or group using computer science to address big problems). </p>
<p class="p1">CS is a huge, diverse field crossing many disciplines, connecting to biology, product design, language, psychology, robotics, math, communication, visual effects, music, and art. It's more about problem-solving than programming. No single class (including 106A or B) represents the full variety of CS. Accordingly, the CS major is extremely flexible. You shouldn't have to take more than one or two CS classes per quarter unless you want to. So, don't worry about myths such as "I shouldn't study CS unless I'm totally obsessed and devoted, since it'll be antisocial and block out other interests." For more information, check out <a href="http://csmajor.stanford.edu/"><span class="s1">csmajor.stanford.edu</span></a> or contact the <a href="http://csmajor.stanford.edu/WhoToSee.shtml"><span class="s1">CS course advisor</span></a>.</p>
<h3>Myths</h3>
<p class="p1">There are a few common myths about computer science, such as "CS is all about programming -- programming fast and hardcore." Extra time spent programming says more about quality, testing, thoughtfulness, previous experience, style, unforeseen bugs, and engagement than it does about CS talent. Code quality, good style, and proper design are much more valuable than speed. So, spending fifteen hours versus five hours on your CS106A assignment says nothing about your fitness as a computer scientist. More importantly, computer science is about way more than programming. It's more about a way of thinking and problem-solving through computing, sometimes using programming as a tool and means of expression. In fact, around half of the CS core (CS103, CS109, and CS161) are problem-set-oriented theory courses. </p>
<p class="p1">Another misconception is the feeling of "I did well in CS106A, but everyone else is better and I'm not actually good at CS." This sense of "feeling like a fraud" is called impostor syndrome, and it's extremely common (<a href="https://www.google.com/search?sourceid=chrome&ie=UTF-8&q=impostor+syndrome#sclient=psy-ab&hl=en&source=hp&q=impostor+syndrome+cs&pbx=1&oq=impostor+syndrome+cs&aq=f&aqi=g-v2g-j1&aql=&gs_sm=e&gs_upl=17660l18285l0l18356l3l2l0l0l0l0l121l189l1.1l2l0&bav=on.2,or.r_gc.r_pw.r_cp.,cf.osb&fp=f5cf4eca40f954d8&biw=1276&bih=706"><span class="s1">'Impostor syndrome CS' Google results</span></a>). It's when you feel that even though you've done well so far, you don't belong because you're not actually that talented. You worry that eventually you'll mess up and other people find you out as a failure. Besides the mental stress of having to do everything right, it can cause problems because the fear of failure means you're less likely to challenge yourself or try new things. Often, just recognizing it as a false pattern of thinking helps -- people think you're good because you really are and you don't need to be perfect, so see what happens if you act 20% more confident than you are and take risks. Also, realize that you don't need to be the absolute best, and it doesn't matter if other people at Stanford have a "head start" -- Stanford CS is world-class, there are way more jobs and opportunities and useful applications of CS than people to fill them, and plenty of successful people such as <a href="http://www.businessweek.com/magazine/content/05_40/b3953093.htm">Marissa Mayer</a> learned computer science in college.</p>
<h3>Next Steps</h3>
<p class="p1">If you liked CS106A, think about taking the next small step and checking out CS106B to gauge your interest in programming, or CS103 to learn the foundations of CS theory. You don't need to be totally certain that CS is your one and only destiny -- if you like the creative way of thinking and problem-solving, keeping trying things out and exploring, and see where it takes you. </p>
<h2>Additional Resources</h3>
<h3>At Stanford</h3>
<p class="p1">To learn about company tours, meals with professors, and CS events, join <a href="https://mailman.stanford.edu/mailman/listinfo/considering_cs"><span class="s1">the considering_cs list</span></a>. You can almost certainly get an internship after CS107, and it's worth trying after CS106B. For information on jobs and internships, explore the <a href="http://forum.stanford.edu/careers/recruiting.php"><span class="s1">Computer Forum</span></a>, sign up for the <a href="https://mailman.stanford.edu/mailman/listinfo/recruiting"><span class="s1">recruiting list</span></a>, and show up to career fairs with a resume. Also, consider <a href="https://cs198.stanford.edu/cs106/Apply.aspx"><span class="s1">applying to section-lead</span></a> (and re-applying!) after 106B -- you'll learn a lot, gain experience and confidence teaching, make a difference, and become part of a great community.</p>
<h3>Choices within the CS Major</h3>
<p class="p5">By no means consider the CS106 series or even programming to represent the full field of CS. CS contains vastly different subfields -- after CS106, regardless of your major, consider dabbling in some of these areas to figure out what you like the most. You can learn more about these different areas at <a href="http://csmajor.stanford.edu/Tracks.shtml"><span class="s4">csmajor.stanford.edu/Tracks.shtml</span></a> and read the program sheets at <a href="http://csmajor.stanford.edu/ProgramSheets.shtml"><span class="s4">http://csmajor.stanford.edu/ProgramSheets.shtml</span></a>.</p>
<ul>
<li>Artificial intelligence -- CS221 (intro to artificial intelligence), CS124 (From languages to information) -- self-driving cars, understanding speech, agents that can behave smartly on their own and learn from experience.
<li>Human-Computer Interaction -- CS147 (Intro to human-computer interaction), CS448B (Data visualization), many more. "product design for computing," involving art, psych, communication, mechanical
engineering, etc. How to make usable software to solve actual human problems.</li>
<li>Theory -- CS103 (Mathematical foundations of computing), CS161 (Algorithms), many more -- Pure problem-solving and puzzles. For example, midpoint Karel.</li>
<li>Systems and Computer Engineering -- CS107, CS110 -- What is actually happening inside your computer? How do we actually compile code? How does the Internet work? You might also learn how to build robots (computer engineering)</li>
<li>Information -- CS124 (From languages to information), CS145 (databases) -- How to extract relevant and useful information from a huge amount of raw data.</li>
<li>Graphics -- CS148 (intro to graphics) -- Display and manipulate images graphically, model objects on-screen, learn basic animation, learn some theory behind effective visuals.</li>
<li>Biocomputation -- a broad spread of CS classes in artificial intelligence and information, as well as biology classes -- Interdisciplinary with CS and biology, with medical and research applications to genetics, bioengineering, etc.</li>
</ul>
<h3>Future Courses</h3>
<h4>Core</h4>
<p class="p5">Here is a concise (not comprehensive) overview of CS classes to consider taking at some point in the future:</p>
<ul>
<li>CS106B is the natural followup to 106A. It gives you more tools for solving problems with computer science, and explores a bit behind-the-scenes in actually implementing some of the tools themselves. If you enjoyed CS106A, definitely consider going on to 106B and seeing how far it takes you.</li>
<li>CS103 is about the theoretical side of computer science. You'll learn how to irrefutably prove that something is true or false, and explore the limits of what computers can and can't do. The only prerequisite for 103 is 106A.</li>
<li>CS109 is another problem set oriented class. It covers probability, taught by Mehran Sahami. Although CS103 is officially a prerequisite for CS109, many people take CS109 before taking CS103, or at the same time.</li>
<li>CS 107 is known as the class that determines whether you can "make it" as a CS major, but it's not -- it just covers systems, a small fraction of computer science. It's very rewarding if you leave time for it, since you learn all of the internals of how programs run on computers and what's really going on. And if you don't like it, there are so many other things in CS to explore.</li>
</ul>
<h4>Exploring within CS</h4>
<p class="p5">After you take a few of the core classes above, the following courses open up. CS classes are not very tracked, so you have a lot of freedom to explore whatever sounds interesting.</p>
<ul>
<li>CS 147: Intro to Human-Computer Interaction. Human-computer interaction is essentially product design for computing. You'll learn how to make user-friendly programs and websites, how to find out what people actually need, and how to use computer science to benefit humans.</li>
<li>CS 148: Graphics. Learn about effective visuals and how to manipulate images through computing.</li>
<li>CS 142: Web development. Learn how to make sophisticated websites.</li>
<li>CS 221: Intro to Artificial Intelligence. Survey the field of artificial intelligence while programming Pacman and Pacman ghosts.</li>
<li>CS 108: Gain experience in industry Java and become much more confident about programming in general. Great for ramping up your coding and learning a bit about web development, and preparing for a software internship.</li>
<li>CS 124: From Languages to Information. Explore the intersection of computer science and linguistics, covering speech recognition and understanding language.</li>
<li>CS 161: Algorithms. If you enjoy thinking about clever ways to solve problems, you'll love this class.</li>
</ul>
<h4>One-unit speaker series</h4>
<p class="p5">These lecture series bring in top speakers -- you can absolutely attend with just CS106A experience:</p>
<ul>
<li>CS 448X: Math and CS behind Special Effects. This is a pretty informal class with industry speakers from places like Pixar. Definitely check it out if you're interested in graphics.</li>
<li>CS 546: Seminar on Liberation Technology. 1 unit lecture series about how to use technology to protect human rights, alleviate poverty, encourage transparency in government, and work for freer societies.</li>
<li>CS 547: Human-Computer Interaction Series. 1 unit lecture series about new ways for people to interact with technology, how to make technology more relevant to people, and other aspects in human-computer interaction.</li>
</ul>
</body>
</html>