-
Notifications
You must be signed in to change notification settings - Fork 39
/
index.html
537 lines (351 loc) · 37.3 KB
/
index.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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="">
<meta name="author" content="">
<title>Flatiron School Prework</title>
<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="css/fontawesome.css">
<link rel="stylesheet" type="text/css" href="css/inconsolata.css">
<link rel="stylesheet" type="text/css" href="css/style.css">
<link rel="stylesheet" type="text/css" href="css/highlight.css">
<link rel="stylesheet" type="text/css" href="css/bootstrap-responsive.min.css">
<!-- [if lt IE 9]><script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/bootstrap.min.js"></script>
</head>
<body data-spy="scroll" data-target=".sidebar-nav" data-offset="40">
<div class="fixed sidebar-nav nav">
<div class="well">
<h1>Flatiron School Prework</h1>
<ul class="nav nav-list sidebar-nav">
<li class="nav-header">Contents</li>
<li><a href="#overview">Overview</a></li>
<li><a href="#setup">Setup</a></li>
<li><a href="#thoughts">Thoughts</a></li>
<li class="nav-header">Internet Basics</li>
<li><a href="#the-web">The Web</a></li>
<li><a href="#command-line">The Command Line</a></li>
<li><a href="#sql-databases">SQL & Databases</a></li>
<li><a href="#html">HTML</a></li>
<li><a href="#css">CSS</a></li>
<li><a href="#git">GIT</a></li>
<li class="nav-header">Programming</li>
<li><a href="#basics">Basics</a></li>
<li><a href="#javascript">Javascript</a></li>
<li><a href="#ruby">Ruby</a></li>
<li><a href="#rails">Rails</a></li>
<li class="nav-header">Advanced</li>
<li><a href="#testing">Testing</a></li>
<li><a href="#best-practices">Best Practices</a></li>
<li class="nav-header">About</li>
<li><a href="#credits">Credits</a></li>
<li><a href="#contributing">Contributing</a></li>
<li><a href="https://github.com/flatiron-school/prework.flatironschool.com/issues">Feedback</a></li>
</ul>
</div>
</div>
<div class="container-fluid" style="margin-left: 300px">
<div class="row-fluid">
<div class="span9" id="content">
<div class="row-fluid">
<div class="document">
<section id="overview">
<h2 class="page-header first">Overview</h2>
<p>In this document you're going to find a ton of reading, videos, and quizzes that Flatiron students complete before their semester even begins. We thought we'd open source this material. We suggest going through this material linearly because it really represents a progressive journey through the fundamentals and abstractions required to build web applications. Enjoy.</p>
<p>The main topics we want students to know about before the semester starts are on the left: Internet Basics, Command-Line Interface, Git Version Control, SQL and Databases, HTML, CSS, Javascript and jQuery, Ruby, and Ruby on Rails.</p>
<p>Each resource has an estimated amount of time it should take you if you have 0 prior knowledge on the topic. In total, if you are coming to this with absolutely no experience, as in, you'd have trouble articulating what the topic even is, then we estimate this work will take you between 80 - 100 hours to complete. If you are a rockstar, this shouldn't take more than 20 hours.</p>
<p>If you are familiar with the topic, we highly suggest trying to take the quiz or challenge first. If you pass easily and collect the badge, great, move on. That being said, even we found ourselves learning new things during this assessment, so maybe try to watch the videos on the topics with which you are most unfamiliar.</p>
<p>In terms of reading and watching videos, feel free to skip through - go for overall coverage as opposed to depth - try to read and watch as much as possible and then try to take the quiz. Be quick, and then do a 2nd round of reading and watching.</p>
<h2 id="setup">Setup</h2>
<p>
To complete these units, you will need a <a href="http://teamtreehouse.com">Treehouse</a> and <a href="http://www.codeschool.com/enrollments/dnFtaXFMbXROSVVqT3N1bngwWnBRUjhGc2k1Z1dEOW52cFJvZEMzRUZvRT0tLWpvUElMODBvdFhiZlA4MjE2Mlc2c1E9PQ==">CodeSchool</a> account. They are both normally $25 a month, so figure you might spend $50-$100 depending on how quickly you get through the material. So far the fine folks at <a href="http://www.codeschool.com/enrollments/dnFtaXFMbXROSVVqT3N1bngwWnBRUjhGc2k1Z1dEOW52cFJvZEMzRUZvRT0tLWpvUElMODBvdFhiZlA4MjE2Mlc2c1E9PQ==">CodeSchool</a> have created a $9 trial month for all Flatiron Preworkers. So register using that link. Treehouse will offer something similar soon.
</p>
<p>You should also have a Rails Development environment setup. There are lots of guides for that on the internet and depending on your OS and setup, it's a bit of a process. You could always use the cross-platform <a href="http://railsinstaller.org/">Rails Installer</a>.</p>
<h2 id="thoughts">Thoughts</h2>
<p>
One of the challenges in learning how to code is that you probably don't even know what you're suppose to learn. When creating this prework, we had 4 goals in mind.
</p>
<ol>
<li>
<strong>Full Stack</strong><br />
To present the full stack of technologies required to build a webapp from the ground up. We don't care if you use ERB or HAML, the web is built on HTML, everyone should learn it. Whether NoSQL or RDBMS, understanding the fundamentals of schema design and SQL is crucial. Students shouldn't shy away from depth. How you can be a web developer without a proficiency in these skills?
</li>
<li>
<strong>Linear Progression</strong><br/ >
The material is presented in order, going from computer / web basics, to data theory, to markup, to styling, to programming, and then to version control. At that point, you've become familiar enough with general syntax and your computer to start learning to program. You learn the basics of code through Ruby and Javascript and then finally move to Rails that builds upon the rest. Thus you start at the lowest level, the literal HTML the browser renders, and progress up through levels of abstraction until you finally get to the kitchen sink that is the Rails framework. As a beginner, don't try to learn Rails without knowing basic HTML/CSS, Ruby, and Javascript. It's a disservice to your education.
</li>
<li>
<strong>Curated Resources</strong><br/>
There is such a plethora of amazing content on learning to code. We liked the consistency of going to a few sources that all shared common interfaces and learning patterns, like videos and interactive portions. So this isn't a complete list of all the resources, but more a curated list of what we think works well together (with lots of feedback from alumni). We would love it if you submitted a github issue with more materials you've enjoyed.
</li>
<li>
<strong>Language Agnosticism</strong><br/>
In the end, programming is about abstractions and expressions, the mechanics of code are universal and exist in all modern languages, python, ruby, and javascript. We teach Ruby because we love it. Thinking your language choice, especially as a beginner, matters, is like thinking that you can only write poetry in English and not in Spanish. Obviously the beauty of poetry is in rhyme and meter, in metaphor and simile, in cadence and rhythm, not in the king's English. Why should code be any different? At Flatiron, you're learning how to think, how to break problems down, how to express yourself, how to abstract ideas, and how to work together. We just learn that through Ruby.
</li>
</ol>
<h2>Why Share It?</h2>
<p>
You might be wondering why we would share our curriculum if we are in the education business. First, we honestly do not think that going through this content alone will make anyone a web developer. That's like saying that knowing how to hammer a nail means you can build a house. Sure, you've got the gestures and mechanics down, maybe, but you don't know the first thing about building. There is just so much more to being a developer than the syntax of how to define a method or iterate over an array. We don't focus on content at the Flatiron School. We focus on learning to love code.</p>
<quote>
<p>If you want to build a ship, don’t drum up the men to gather wood, divide the work and give orders. Instead, teach them to yearn for the vast and endless sea.</p>
<cite>Antoine de Saint-Exupery</cite>
</quote>
</p>
</section>
<section id="internet-basics">
<h2 class="page-header">Internet Basics</h2>
<h2 id="the-web" class="first">The Web</h3>
<p>The goal of this section is for you to understand the basics of the web. What web servers are, how code is interpreted, basic things like that.</p>
<h3><a href="http://teamtreehouse.com/library/websites/website-basics/website-basics">Website Basics:</a> 1.5 Hours</h3>
<p><code><a href="http://teamtreehouse.com/library/websites/website-basics/website-basics">http://teamtreehouse.com/library/websites/website-basics/website-basics</a></code></p>
<p>Beyond HTML and CSS, there are several basic technology skills that every web professional should know. Some of these include uploading files to the web via FTP or purchasing domains and hosting.</p>
<h3><a href="http://teamtreehouse.com/library/websites/technology-foundations/graphic-basics">Graphic Basics:</a> 2 Hour</h3>
<p><code><a href="http://teamtreehouse.com/library/websites/technology-foundations/graphic-basics">http://teamtreehouse.com/library/websites/technology-foundations/graphic-basics</a></code></p>
<p>Graphic basics is for developers and designers alike, to become familiar with the difference between vector and raster, units and increments and saving for the web.</p>
<h3><a href="http://teamtreehouse.com/library/websites/aesthetic-foundations">Aesthetic Foundations:</a> 2.5 Hours</h3>
<p><code><a href="http://teamtreehouse.com/library/websites/aesthetic-foundations">http://teamtreehouse.com/library/websites/aesthetic-foundations</a></code></p>
<p>Aesthetic Foundations will cover the elements and principles of art, along with color theory. This basic knowledge will provide a design language that enables more effective communication amongst designers and other team members.</p>
<h2 id="terms">Term Definitions</h3>
<p>
Thanks to the amazing team at Skillcrush, lots of <a href="http://skillcrush.com/terms/">tech terms</a> are artfully explained. These are the ones you 100% need to know.
</p>
<p>
<dl>
<dd><a href="http://www.skillcrush.com/terms/domain.html">Domain</a></dd>
<dt><p>Ever wonder what that thing in the top of the browser is?</p></dt>
<dd><a href="http://www.skillcrush.com/terms/pop-imap.html">POP & IMAP</a></dd>
<dt><p>POP, IMAP, SMTP Oh My! It's only email, don't be scared.</p></dt>
<dd><a href="http://www.skillcrush.com/terms/api.html">API</a></dd>
<dt><p>We're building programs that can talk to other programs. Their APIs are their languages. Sort of.</p></dt>
<dd><a href="http://www.skillcrush.com/terms/wysiwyg.html">WYSIWYG</a></dd>
<dt><p>You can't always get what you want, but sometimes, What You See Is What You Get.</p></dt>
<dd><a href="http://www.skillcrush.com/terms/ipaddress.html">IP Address</a></dd>
<dt><p>There's no place like 127.0.0.1, there's no place like 0.0.0.0, there's no place like localhost.</p></dt>
<dd><a href="http://www.skillcrush.com/terms/web-server.html">Web Server</a></dd>
<dt><p>Apache, Puma, Unicorn, Thin, IIS, Mongrel, don't be scared, they are just the beasts behind the world wide web.</p></dt>
<dd><a href="http://www.skillcrush.com/terms/bugs.html">Bugs</a></dd>
<dt><p>The term 'debugging' was coined by <a href="http://en.wikipedia.org/wiki/Grace_Hopper">Grace Hopper</a> when she literally removed a moth from her computer to get it working.</p></dt>
<dd><a href="http://www.skillcrush.com/terms/dns.html">DNS</a></dd>
<dt><p>Finally understand how <code><a href="http://74.125.228.4">74.125.228.4</a></code> actually means google.com</p></dt>
<dd><a href="http://www.skillcrush.com/terms/cloud.html">The Cloud</a></dd>
<dt><p>It's like instead of your head being in the clouds, it's all your infrastructure.</p></dt>
<dd><a href="http://www.skillcrush.com/terms/command-line.html">Command Line</a></dd>
<dt><p>Live deep in the nix heartland and become a loving extension of the shell.</p></dt>
<dd><a href="http://www.skillcrush.com/terms/version-control.html">Version Control</a></dd>
<dt><p>Rule 1. Never lose code. Rule 2. Never lose code.</p></dt>
<dd><a href="http://www.skillcrush.com/terms/grid-systems.html">Grid Systems</a></dd>
<dt><p>Just because we're not designers doesn't mean we shouldn't appreciate and respect their grids.</p></dt>
<dd><a href="http://www.skillcrush.com/terms/rails.html">Rails</a></dd>
<dt><p>Not liking Ruby on Rails is like not liking parfait.</p></dt>
<dd><a href="http://www.skillcrush.com/terms/cookies.html">Cookies</a></dd>
<dt><p>There's probably a pun we could come up with, but we take security seriously.</p></dt>
<dd><a href="http://www.skillcrush.com/terms/404-error.html">404 Error</a></dd>
<dt><p>The web's <a href="http://fruit.gs/404.html">best</a> <a href="https://github.com/404">easter</a> <a href="http://seatgeek.com/404">egg</a>.</p></dt>
<dd><a href="http://www.skillcrush.com/terms/responsive-design.html">Responsive Design</a></dd>
<dt><p>Keep your mind like water, but your design should be fluid and screen independent.</p></dt>
<dd><a href="http://www.skillcrush.com/terms/seo.html">SEO</a></dd>
<dt><p>Despite what you might read, it's basically just black magic, the dark arts, the voodoo that gives traffic.</p></dt>
<dd><a href="http://www.skillcrush.com/terms/hexidecimal.html">Hex</a></dd>
<dt><p>Because green to you might not be green to me. So there's these really specific codes we use for colors.</p></dt>
<dd><a href="http://www.skillcrush.com/terms/ruby.html">Ruby</a></dd>
<dt><p>The. Best. Programming. Language. Ever. Period. We. Promise.</p></dt>
<dd><a href="http://www.skillcrush.com/terms/cms.html">CMS</a></dd>
<dt><p>All applications are basically just content management systems anyway.</p></dt>
<dd><a href="http://www.skillcrush.com/terms/pseudocode.html">Pseudo Code</a></dd>
<dt><p>First learn to express yourself. Then learn to code.</p></dt>
<dd><a href="http://www.skillcrush.com/terms/https.html">HTTPS</a></dd>
<dt><p>Insecure content warnings? HTTP Sniffing? Here's why.</p></dt>
<dd><a href="http://www.skillcrush.com/terms/open-source.html">Open Source</a></dd>
<dt><p>It's sort of impossible for me to quantify the impact open source software has made, but at <a href="http://trends.builtwith.com/Web-Server/Apache">least 64%</a> of the top million websites are powered by it.</p></dt>
<dd><a href="http://www.skillcrush.com/terms/ajax.html">AJAX</a></dd>
<dt><p>And <a href="http://www.adaptivepath.com/ideas/ajax-new-approach-web-applications">one day in February 2005</a>, the Internet suddenly felt different.</p></dt>
<dd><a href="http://www.skillcrush.com/terms/frontendbackend.html">Frontend / Backend</a></dd>
<dt><p>What's the difference? Turns out, less and less.</p></dt>
<dd><a href="http://www.skillcrush.com/terms/javascript.html">Javascript</a></dd>
<dt><p>The most pervasive and ubiquitous programming language since Flash.</p></dt>
<dd><a href="http://www.skillcrush.com/terms/programming-languages.html">Programming</a></dd>
<dt><p>It's awesome.</p></dt>
<dd><a href="http://www.skillcrush.com/terms/database.html">Database</a></dd>
<dt><p>Just think Excel spreadsheet on crack. Better. We mean better.</p></dt>
<dd><a href="http://www.skillcrush.com/terms/css.html">CSS</a></dd>
<dt><p>We could never love anyone that didn't appreciate the importance of a separation of content and style.</p></dt>
<dd><a href="http://www.skillcrush.com/terms/html.html">HTML</a></dd>
<dt><p>All documents should come in this format.</p></dt>
</dl>
</p>
<h2 id="command-line" class="command-line">The Command Line</h2>
<p>Familiarity with a shell environment is crucial to being a functional developer. There are no good interactive tutorials for command lines, so complete the following reading.</p>
<h3><a href="http://cli.learncodethehardway.org/book/">Learn the Command Line the Hard Way:</a> 3 Hours</h3>
<p><code><a href="http://cli.learncodethehardway.org/book/">http://cli.learncodethehardway.org/book/</a></code></p>
<p>The venerable <a href="http://programming-motherfucker.com/">Zed Shaw</a> gives us a short book about your shell.</p>
<h3><a href="http://cli.learncodethehardway.org/book/">Command Line Basics:</a> 0.5 Hours</h3>
<p><code><a href="http://blog.teamtreehouse.com/command-line-basics">http://blog.teamtreehouse.com/command-line-basics</a></code></p>
<h3><a href="https://gist.github.com/a8a7ca963e37e0b108b9">Bash Basics:</a> 0.5 Hours</h3>
<p><code><a href="https://gist.github.com/a8a7ca963e37e0b108b9">https://gist.github.com/a8a7ca963e37e0b108b9</a></code></p>
<h2 id="sql-databases">SQL & Databases</h2>
<p>This section is all about understanding what databases are and how to query them for data.</p>
<h3><a href="http://sql.learncodethehardway.org/book/">Learn SQL the Hardway:</a> 4 Hours</h3>
<p><code><a href="http://sql.learncodethehardway.org/book/">http://sql.learncodethehardway.org/book/</a></code></p>
<h3><a href="http://code.google.com/edu/tools101/mysql.html">Google's MySQL Tutorial:</a> 2 Hours</h3>
<p><code><a href="http://code.google.com/edu/tools101/mysql.html">http://code.google.com/edu/tools101/mysql.html</a></code></p>
<h2 id="html">Hypertext Markup Language</h2>
<p>The source of all content on the web, HTML is a crucial markup syntax to understand. We will be covering very little HTML through the course and we seriously expect you to know what the basic tags are and when to use them.</p>
<h3><a href="http://learn.shayhowe.com/html-css/">HTML & CSS Tutorial:</a> 2 Hours</h3>
<p><code><a href="http://learn.shayhowe.com/html-css/">http://learn.shayhowe.com/html-css/</a></code></p>
<p>This is a beautiful guide that we recommend everyone read through as quickly as possible. Don't worry if you don't fully grok this, the Treehouse unit below covers all this through videos and tests.</p>
<h3><a href="http://teamtreehouse.com/library/websites/html">Treehouse HTML Basics:</a> 6 Hours</h3>
<p><code><a href="http://teamtreehouse.com/library/websites/html">http://teamtreehouse.com/library/websites/html</a></code></p>
<p>This HTML tutorial helps you master HTML. Mastering HTML and its many elements is critical for any type of web professional. HTML or "Hyper Text Markup Language" describes the basic structure and content of a web page.</p>
<h3><a href="http://www.codeschool.com/courses/functional-html5-css3">Advanced HTML5 & CSS3:</a> 6 Hours</h3>
<p><code><a href="http://www.codeschool.com/courses/functional-html5-css3">http://www.codeschool.com/courses/functional-html5-css3</a></code></p>
<p>If you are familiar with HTML & CSS already and were able to complete the Treehouse unit pretty easily, we recommend you try this unit. Especially if you are into aesthetics and advanced behaviors as it covers some amazing features of HTML & CSS.</p>
<h2 id="css">Cascading Style Sheets</h2>
<p>While HTML tells the browser what different parts of the page are, CSS says what those pieces should look like.</p>
<h3><a href="http://teamtreehouse.com/library/websites/css-foundations">CSS Foundations:</a> 6 Hours</h3>
<p><code><a href="http://teamtreehouse.com/library/websites/css-foundations">http://teamtreehouse.com/library/websites/css-foundations</a></code></p>
<p>Cascading Style Sheets (CSS) is a language used to describe the visual look of a web page. Using CSS, it is possible to change colors, margin, padding, fonts, and much more.</p>
<h3><a href="http://www.codeschool.com/courses/css-cross-country">CSS Cross Country:</a> 6 Hours</h3>
<p><code><a href="http://www.codeschool.com/courses/css-cross-country">http://www.codeschool.com/courses/css-cross-country</a></code></p>
<p>A beautiful and interactive tutorial from the amazing people at CodeSchool.</p>
<h3><a href="http://teamtreehouse.com/library/websites/css3">CSS3 on Treehouse:</a> 4 Hours</h3>
<p><code><a href="http://teamtreehouse.com/library/websites/css3">http://teamtreehouse.com/library/websites/css3</a></code></p>
<p>CSS3 (Cascading Style Sheets 3) is a superset of CSS that adds many new constructs and properties. Support for CSS3 is rapidly improving across all major browsers, making it a critical piece of technology for modern web professionals.</p>
<h3><a href="http://teamtreehouse.com/library/websites/build-a-responsive-website/">Responsive Websites:</a> 4 Hours</h3>
<p><code><a href="http://teamtreehouse.com/library/websites/css3">http://teamtreehouse.com/library/websites/build-a-responsive-website/</a></code></p>
<p>The Smells Like Bakin' cupcake company needs their website to work on tablets and phones. We will modify the code of their pre-existing website so that it is flexible and fits beautifully into a wide variety of screen resolutions and devices.</p>
<h2 id="git">Git: Version Control</h2>
<p>Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.</p>
<h3><a href="http://www.codeschool.com/courses/try-git">Try Git:</a> 1 Hour</h3>
<p><code><a href="http://www.codeschool.com/courses/try-git">http://www.codeschool.com/courses/try-git</a></code></p>
<p>Get an introduction to the basic concepts of Git version control.</p>
<h3><a href="http://www.codeschool.com/courses/git-real">Git Real:</a> 4 Hours</h3>
<p><code><a href="http://www.codeschool.com/courses/git-real">http://www.codeschool.com/courses/git-real</a></code></p>
<p>A more advanced introduction to the core of version control with Git.</p>
<h3><a href="http://gitimmersion.com/">Git Immersion:</a> 3 Hours</h3>
<p><code><a href="http://gitimmersion.com/">http://gitimmersion.com/</a></code></p>
<p>Git Immersion is a guided tour that walks through the fundamentals of Git, inspired by the premise that to know a thing is to do it.</p>
<h3><a href="http://git-scm.com/book">The Git Book:</a> 6 Hours</h3>
<p><code><a href="http://git-scm.com/book">http://git-scm.com/book</a></code></p>
<p>The entire Pro Git book, written by Scott Chacon and published by Apress, is available here.</p>
<h3><a href="http://git-scm.com/videos">Git Videos:</a> 1 Hours</h3>
<p><code><a href="http://git-scm.com/videos">http://git-scm.com/videos</a></code></p>
<p>Four videos covering some basics from the creators and maintainers of Git.</p>
</section>
<section id="programming">
<h2 class="page-header">Programming</h2>
<h2 id="basics" class="first">Basics</h2>
<p>Certain aspects of coding are fundamental, learn them through javascript and ruby.</p>
<h3><a href="http://www.codeschool.com/courses/try-ruby">Try Ruby:</a> 1 Hour</h3>
<p><code><a href="http://www.codeschool.com/courses/try-ruby">http://www.codeschool.com/courses/try-ruby</a></code></p>
<p>Ruby is a programming language from Japan (available at ruby-lang.org) which is revolutionizing the web. The beauty of Ruby is found in its balance between simplicity and power. This interactive tutorial is maintained by CodeSchool but was originally by the legend <a href="http://www.slate.com/articles/technology/technology/2012/03/ruby_ruby_on_rails_and__why_the_disappearance_of_one_of_the_world_s_most_beloved_computer_programmers_.html">_why_the_lucky_stiff</a>.</p>
<h3><a href="http://teamtreehouse.com/library/programming-2/introduction-to-programming">Introduction to Programming:</a> 4 Hours</h3>
<p><code><a href="http://teamtreehouse.com/library/programming-2/introduction-to-programming">http://teamtreehouse.com/library/programming-2/introduction-to-programming</a></code></p>
<p>Basic programming skills are essential for all web professionals, including designers. Many programming languages share a common set of concepts, which will be covered in this course.</p>
<h2 id="javascript">Javascript</h2>
<h3><a href="http://teamtreehouse.com/library/websites/javascript-foundations">Javascript Foundations:</a> 6 Hours</h3>
<p><code><a href="http://teamtreehouse.com/library/websites/javascript-foundations">http://teamtreehouse.com/library/websites/javascript-foundations</a></code></p>
<p>Learn the fundamentals to the JavaScript Language. JavaScript is the key to programming in the browser, mastering jQuery, and building apps with Node.js. You will learn how to program effectively in JavaScript, the different types, functions, and techniques for writing solid JavaScript. You will benefit from taking Introduction to Programming if you don't have much experience with programming.</p>
<h3><a href="http://www.codeschool.com/courses/jquery-air-first-flight">jQuery Air, First Flight:</a> 6 Hours</h3>
<p><code><a href="http://www.codeschool.com/courses/jquery-air-first-flight">http://www.codeschool.com/courses/jquery-air-first-flight</a></code></p>
<p>Simplify web development with the amazing javascript library jQuery, in use by over 220 million websites.</p>
<h3><a href="http://www.codeschool.com/courses/jquery-air-captains-log">jQuery Air, Captain's Log:</a> 6 Hours</h3>
<p><code><a href="http://www.codeschool.com/courses/jquery-air-captains-log">http://www.codeschool.com/courses/jquery-air-captains-log</a></code></p>
<p>Now that you've got the basics of javascript and jquery, take flight as a captain of the browser (or something)!</p>
<h2 id="ruby">Ruby</h2>
<quote>
<p>My conscience won’t let me call Ruby a computer language. That would imply that the language works primarily on the computer’s terms. That the language is designed to accomodate the computer, first and foremost. That therefore, we, the coders, are foreigners, seeking citizenship in the computer’s locale. It’s the computer’s language and we are translators for the world.</p>
<p>But what do you call the language when your brain begins to think in that language? When you start to use the language’s own words and colloquialisms to express yourself. Say, the computer can’t do that. How can it be the computer’s language? It is ours, we speak it natively!</p>
<p>We can no longer truthfully call it a computer language. It is coderspeak. It is the language of our thoughts.</p>
<cite><a href="http://mislav.uniqpath.com/poignant-guide/">_why's poignant guide to ruby</a></cite>
</quote>
<h3 class="clear"><a href="http://pine.fm/LearnToProgram/">Learn to Program:</a> 10 Hours</h3>
<p><code><a href="http://pine.fm/LearnToProgram/">http://pine.fm/LearnToProgram/</a></code></p>
<p>Chris Pine's Learn to Program is a classic book that is mostly available online for free. Read it all. Then buy it and read it again.</p>
<h3><a href="http://teamtreehouse.com/library/programming-2/ruby-foundations">Ruby Foundations:</a> 10 Hours</h3>
<p><code><a href="http://teamtreehouse.com/library/programming-2/ruby-foundations">http://teamtreehouse.com/library/programming-2/ruby-foundations</a></code></p>
<p>Learn the fundamentals to become a Ruby and Rails developer. You'll learn things like what Ruby is, how to write object oriented Ruby, classes and modules, programming structures and types, and more. There are no requirements for this course other than a web browser and willingness to learn.</p>
<h3><a href="http://www.codeschool.com/courses/ruby-bits">Ruby Bits:</a> 6 Hours</h3>
<p><code><a href="http://www.codeschool.com/courses/ruby-bits">http://www.codeschool.com/courses/ruby-bits</a></code></p>
<p>Learn all the little bits that make Ruby one of the most popular programming languages amongst non-programmers and programmers alike.</p>
<h2 id="rails">Rails</h2>
<h3><a href="http://guides.rubyonrails.org/getting_started.html">Getting Started with Rails Guide:</a> 2 Hours</h3>
<p><code><a href="http://guides.rubyonrails.org/getting_started.html">http://guides.rubyonrails.org/getting_started.html</a></code></p>
<p>This guide covers getting up and running with Ruby on Rails. After reading it, you should be familiar with:
<ul>
<li>Installing Rails, creating a new Rails application, and connecting your application to a database.</li>
<li>The general layout of a Rails application.</li>
<li>The basic principles of MVC (Model, View Controller) and RESTful design.</li>
<li>How to quickly generate the starting pieces of a Rails application.</li>
</ul>
</p>
<h3><a href="http://www.codeschool.com/courses/rails-for-zombies-redux">Rails for Zombies:</a> 4 Hours</h3>
<p><code><a href="http://www.codeschool.com/courses/rails-for-zombies-redux">http://www.codeschool.com/courses/rails-for-zombies-redux</a></code></p>
<p>Ruby on Rails, the most popular framework in-use by Zombies. That's right, you can basically be brain dead and use Ruby on Rails. No offense to brain dead people or zombies.</p>
<h3><a href="http://www.codeschool.com/courses/rails-for-zombies-2">Rails for Zombies 2:</a> 4 Hours</h3>
<p><code><a href="http://www.codeschool.com/courses/rails-for-zombies-2">http://www.codeschool.com/courses/rails-for-zombies-2</a></code></p>
<p>In part 2 of Rails for Zombies, you learn even more about how to use this amazing framework as the undead.</p>
<h3><a href="http://teamtreehouse.com/library/programming-2/build-a-simple-version-of-facebook">Building Facebook:</a> 12 Hours</h3>
<p><code><a href="http://teamtreehouse.com/library/programming-2/build-a-simple-version-of-facebook">http://teamtreehouse.com/library/programming-2/build-a-simple-version-of-facebook</a></code></p>
<p>That's right, in theory, if you've gotten this far, you are ready to make a billion dollars and build a simple version of Facebook!</p>
</section>
<section id="advanced">
<h2 class='page-header'>Advanced Topics</h2>
<p>
At this point in the prework it's time to go from Rubywan to Ruby Knight. You'll be covering abstract concepts like testing and idioms, paradigms, and best practices. Do the best you can, enjoy.
</p>
<h2 id="testing">Testing</h2>
<h3><a href="http://www.codeschool.com/courses/testing-with-rspec">Testing with RSpec:</a> ~ Hours</h3>
<p><code><a href="http://www.codeschool.com/courses/testing-with-rspec">http://www.codeschool.com/courses/testing-with-rspec</a></code></p>
<p>Write code that tests your code. If it seems like a post-modern nightmare, that's because it sort of is.</p>
<h3><a href="http://www.codeschool.com/courses/rails-testing-for-zombies">Rails Testing for Zombies:</a> ~ Hours</h3>
<p><code><a href="http://www.codeschool.com/courses/rails-testing-for-zombies">http://www.codeschool.com/courses/rails-testing-for-zombies</a></code></p>
<p>After eating all these brainz, you're probably pretty smart. Now learn how to prove that your code works.</p>
<h2 id="best-practices">Best Practices</h2>
<h3><a href="http://www.codeschool.com/courses/rails-best-practices">Rails Best Practices:</a> ~ Hours</h3>
<p><code><a href="http://www.codeschool.com/courses/rails-best-practices">http://www.codeschool.com/courses/rails-best-practices</a></code></p>
<p>"Any fool can write code for machines, it takes a programmer to write code for humans."</p>
</section>
<section id="advanced">
<h2 class='page-header'>About</h2>
<h2 id="credits" class="first">Credits</h2>
<p>First, we'd love to thank all the amazing people who created these source materials. Most of it is from CodeSchool and Treehouse, with a bit from Zed Shaw, and some from the people at Skillcrush. Obviously there are a lot more resources out there for learning these topics. This guide is just my current preferences and tries to put them in a linear fashion so skills can build upon each other. Hope it helps someone. Oh and the theme for the site was purchased from <a href="https://wrapbootstrap.com/">WrapBootstrap</a>.</p>
<h2 id="contributing">Contributing</h2>
<p>Right now the <a href="https://github.com/flatiron-school/prework.flatironschool.com">repository</a> is just a static hardcoded HTML site. We'll be moving it to Jekyll or something shortly so the content is easier to edit. Until then, feel free to fork and add resources, fix typos, whatever. You can also just use <a href="https://github.com/flatiron-school/prework.flatironschool.com/issues">Github issues</a> to suggest other resources, etc.</p>
</section>
</div>
</div>
<div id="footer">
<hr>
<footer>
Copyright © 2012, Flatiron School
</footer>
</div>
</div>
</div>
</div>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-33578770-8']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
<!-- Start of Async HubSpot Analytics Code -->
<script type="text/javascript">
(function(d,s,i,r) {
if (d.getElementById(i)){return;}
var n=d.createElement(s),e=d.getElementsByTagName(s)[0];
n.id=i;n.src='//js.hubspot.com/analytics/'+(Math.ceil(new Date()/r)*r)+'/69751.js';
e.parentNode.insertBefore(n, e);
})(document,"script","hs-analytics",300000);
</script>
<!-- End of Async HubSpot Analytics Code -->
<a href="https://github.com/flatiron-school/prework.flatironschool.com"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub"></a>
</body>
</html>