Skip to content

All course information, weekly readings & challenges, presentation slides for Techmecolor's Learn to Code: Javascript

License

Notifications You must be signed in to change notification settings

swfisher/TMCLearnToCode

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

88 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Learn To Code: Javascript Series by Techmecolor

This repository includes all course information, weekly readings & challenges, presentation slides for Techmecolor's Learn to Code: Javascript Series.

Course Philosophy:

"The better you understand what you are doing, the better you will do it." - Max Kanat-Alexander

A conceptual foundation is a set of deeply internalized mental tools that make new concepts easier to grasp. This course aims to help beginners build such a conceptual basis for continued learning in computer science and programming. The course aims at developing a precise understanding of a small set of universal ideas rather than a fuzzy understanding of a broad range of ideas.

This means that specific topics which might be important to finding your first job as a programmer won't be covered. However, it also means that you'll have the foundational mental tools to study those topics efficiently.

Goals

The conceptual foundation we will build together consists of the following:

  • Understanding the nature of computers and programs.
  • Finding effective patterns for thinking about logical problems in general.
  • Practical programming experience (with Javascript).
  • Practical experience creating web applications (with Javascript).

Three Helpful Attitudes for Learning

Comfort with Discomfort

Embrace the process of pushing the edge of your understanding.

If a challenge is nice and comfortable, seek out something that is a little harder. The deliciousness of mental challenges is an acquired taste. You'll need to get comfortable with whole new ways of thinking and being challenged.

Delayed Gratification

Prioritize long term benefits over short term frustrations.

Be willing to not figure it out today, take a walk, and come back to it. Learning takes time and goes step by step. Every true "A-ha" comes after a great deal of "I have no idea" and often "I give up." Take a deep breath, take your your time, and be methodical about your obstacles. Your obstacles are your opportunity.

The Beauty of It

Tap into your child-like wonder and curiosity about the world.

Learning something as weird and wonderful as programming shouldn't feel like a chore (all the time). While some dry work is unavoidable, there are beautiful moments of emotional and intellectual discovery that learning a true art form offers.

The context of changing your career trajectory and seeking to improve your financial situation can make learning to code feel like a time investment with a lot riding on it. A little bit of that stress is a positive motivator, but too much can feel overwhelming. In class, we encourage you to feel free to relax your mind and focus completely on solving the problems in front of you. We encourage you to view problem solving as a playful, enjoyable activity in which all external concerns dissappear for a while. Programming is a long term investment and each class is just a small step in getting that started. We hope you'll enjoy the journey as well as experiencing professional growth along the way.

Embrace your curiosity. Allowing yourself to ask and experiment with questions that interest you will make you a better programmer in a very practical sense. The most important questions to your intellectual growth are the ones you come up with yourself, since these clearly mean something to you.

What you'll be doing

The course should take participants about 10 hours a week for 3.5 months (14 weeks). We feel that spending significantly less than this may not result in the kind of consistent practice required to develop the deep mental skills for programming.

Class time will be primarily dedicated to solving programming problems in small groups. At the beginning of each class, we will spend about 30 minutes reviewing the conceptual building blocks introduced in the reading and checking our understanding of them. Once in a while, a short talk may be given to provide deeper technical background on something.

Weekly reading will be assigned primarily from the free online book "eloquent javascript". Additionally, a weekly list of recommended practice problems will be curated to bring the concepts from the reading into practice. Honoring the following two commitments should result in a firm understanding and strong practical ability:

  • Do the reading carefully and check your own understanding of each conceptual building block. Before you begin a close read of the chapter, scan the sub-headings for the whole chapter to create "hooks" to hang the details on.
  • Dedicate 6 hours to the practice problems and spread this effort out across several days of the week rather than all at once on your off-day. This spreading out is called spaced repetition and is important to effective learning.

Projects suitable for a professional portfolio will be pursued in the second module of the curriculum.

Typical Week:

Class
  • Review & Check Conceptual Building Blocks: 30 Minutes
  • Group Practice on Programming Challenges: 1.5 hours.
Independent Work
  • 2 Hours of Reading
  • 6 Hours of Independent Exercises and Projects

Course Content

Module 1: Foundations of Programming

  • Week 1 - Problem Solving and Computation
  • Week 2 - Values, Types, and Operators
  • Week 3 - Program Structure
  • Week 4 - Review & Mastery of Previous Topics
  • Week 5 - Recursion and Abstraction (Functions, Purity, Closures)
  • Week 6 - Data Structures: Objects and Arrays
  • Week 7 - Review & Mastery of Previous Topics
  • Week 8 - Higher Order Functions
  • Week 9 - Object Oriented Programming & Prototypes
  • Week 10 - Review & Mastery of Previous Topics
  • Week 11 - Programmer's Best Friend: Bugs & Errors.

Module 2: Programming for the Web

  • Week 12 - Asynchronous Programming, Javascript and the Browser
  • Week 13 - The Document Object Model
  • Week 14 - Event Handling Bonus Topics: HTTP and Forms, Node.js and Back End Applications

People

  • Kimberly Harris is the organizer of the TechMeColor meetup faciliating this course.
  • Sam Fisher is the primary teacher and curriculum designer.

The program is entirely volunteer-run as an act of service to the community.

About

All course information, weekly readings & challenges, presentation slides for Techmecolor's Learn to Code: Javascript

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •