Version 1.2
This comprehensive course gives you everything you need to begin a career as a JavaScript developer. In this fast-paced, project-based 13-week course, you will be introduced to all the skills necessary for web application development.
Not a contract
For definitive contractual agreements, see the "Portland Code School Student Enrollment Agreement" that you signed. Nothing in this syllabus is intended to supersede or replace terms agreed to in that document. Where a conflict exists, that document will apply.
Monday-Friday 9:00AM to 5:00PM
PCS Classroom, 735 SW 20th Place, Suite 230 Portland, OR 97209
Dan Bauer
Email: dbauer@portlandcodeschool.com
Tom McCluskey
Email: tmccluskey@portlandcodeschool.com
This class continues your education in software development. You should be able to do the following:
If you have questions about these prerequisites, contact your instructor.
The core abilities for students in our program are as follows. They are designed to be the overarching goals for everything you do. Each of them have been specifically requested by the employer network and we believe that they are good goals for all developers to aspire to and flesh out.
Technical abilities are skills needed to succeed in web development.
Career abilities are skills needed to have a successful development career.
Class hours: Monday-Friday 9am - 5pm
You must attend all classes. Class begins promptly at 9am. Late arrivals and missing team members are very disruptive. If you are going to miss class or even be as little as 10 minutes late, please email Erin prior to 9am.
This course requires 40 hours each week for classroom time. In addition, successful students devote approximately 10-20 outside hours of their own time each week. In effect, think of this as a demanding full time job where 40 hours each week are required, but you still need to put in a little extra if you want to impress your boss and get a raise.
A core skill of professional work is being able to estimate when you will complete a task. This requires being aware of your own skills and your own productivity. Unlike classes at other schools, this course may not always break down projects into small pieces with specific deadlines. Instead, it requires you to estimate completion times for all assignments, to measure both your effort and your productivity, and to learn time management techniques that work for you.
While setting your own assignment deadlines, you will asked to cultivate a bias towards action and to complete assignments as fast as possible while maintaining a high level of quality. Since most of our work is project-based teamwork, rapid completion of assignments will require learning how to motivate other members of your team as well as meeting your own commitments. This is all part of a professional skill set.
The web is full of places where you can learn to program. You will read blogs, follow tutorials, watch screencasts during the course. Everybody has different learning styles: some people learn well through these resources. However, realistically, the density of information is very low. Realize that some topics will be difficult, and while these resources can make some subjects more accessible, there is no substitution for studying them in depth and then applying your knowledge by programming. Some people have a natural inclination to seek out other textbooks or resources when the one they are using becomes difficult to understand. However, this is just a delaying tactic, a form of avoidance. If you are having difficulty learning using one method of learning, the best technique is to use an entirely different method of learning.
In our case, the best alternative when you think you don't understand how to code is to start coding. Stop reading and try it yourself. Turn a normally passive activity, watching TV, into an active learning experience by programming while you watch.
There is no better way to learn coding then to do it, to fail, and to puzzle out what is going on. It will be a waste of time for you to switch textbooks or switch screencasts if you find that the offered resources are not giving you immediate understanding.
You need to provide your own computer running Mac OS X 10.9 (or later) for this class (or rent one from the school).
Portland Code School highly recommends MacBooks Pro or MacBooks Air running OSX 10.9 or later. Most of the best coding tools are developed on that operating system first. The important aspect of OSX is the underlying UNIX-like operating system. We place an emphasis at being able to work on a Unix/Linux command line level, down in the guts of the operating system as well as the entire group learning the same set of tools.
You are encouraged to learn and use Atom (http://www.atom.io).
Git is a distributed version control system. It is complicated, arcane, and difficult to learn. Yet, it is one of the most commonly used and essential to any developer. We will start using git in the first week and emphasize its use throughout. You will be required to be able to use git from the command line, but we will also explore graphical user interfaces to make your use of git more transparent and powerful.
There will be more tools introduced as the class goes on, but these are good places to start.
Our ultimate goal is to be able to give a shining recommendation about you to any and all possible employers. Over the years, Erin has worked with and hired many software engineers at both a junior and senior level. Our goal for you is that we would want to hire you ourselves.
Along the way, we will be asking ourselves the same questions about you that all hiring managers will be asking about you:
Your progress will be assessed using a variety of methods:
We will keep records of your progress. Your records are private to you and your instructor. However, at the end of the session, employers ask us for recommendations—the names of particularly talented and hard-working students. We use student scores and evaluations to identify students for these recommendations.
We will check-in 1-on-1 with you every two weeks. You will get early notice if you need to step up your game in any particular area. After that, if in our judgment we think you still aren't able to complete the demands of the course and become a viable developer, we will discuss alternatives with you that may include termination of your contract with Portland Code School. For your part, if you feel you are not getting your money's worth, you can terminate your contract at any time. Check your student contract for details.
Don't worry: every two weeks, you also get to evaluate us. Fair is fair, after all. We practice agile methods here, which means we do regular retrospectives and make improvements.
This class is project- and collaboration-driven. Students are expected to keep pace with the group and invest extra time if they feel they are falling behind. Students should communicate with their peers and collaborate with them to schedule extra review time outside of class. They are expected to come prepared to build on top of the skills that they learned in prior days' classes or with appropriate questions to solidify their understanding.
Group work will be emphasized throughout the course and it is important that students help each other keep to the same pace by extending help when concepts click more quickly and asking for help when required.
This class depends upon an atmosphere of mutual respect among students and staff. Together, we create a safe place to listen, learn, speak candidly, and fail safely. This is not a typical college class, it's a team effort producing a final product: jobs for everyone. You have the opportunity to make deep connections here that you will enjoy the rest of your career.
Students are expected to act at their highest capacity and with mutual respect for each other regardless of age, race, gender identity and expression, sexual orientation, or prior experience. Instructors are expected to lead in this regard by example.
In a related vein, this class requires work in close proximity to others as we code and debug in pairs and small groups. Good hygiene is mandatory and an additional sign of respect for your colleagues.
Grievances Procedure
Students who observe or experience any behavior on the part of instructors, staff, or students at Portland Code School that does not meet the school's Code of Conduct should take action. If you experience or perceive a problem, attempt to work it out on your own, if possible, but do not hesitate to bring it privately to the attention of your instructor. If this is unsatisfactory, bring it to the attention of the school Director (Cris Kelly) or Head Instructor (Al Zimmerman).
Each term, students may collaboratively establish other norms and expectations specific to that cohort. There will be discussions at the beginning of the term and at regular intervals to make sure these are understood by all.
This course relies on the following cycle to teach each new concept:
Learn and discuss: New concepts are introduced by the instructor. Questions and discussion are encouraged at any point in the process. The idea is to create an active environment and move through to actually writing code as quickly as possible.
Play and fail: Children learn faster than adults because they play and they don't care about failing. We encourage a playful, safe learning environment. We use interactive coding tools and encourage students to try every new idea out for themselves. We encourage test-driven development, where the first step is failure (and the last step is triumph!).
Collaborate with others: Employers tell us that the most important skill is working on teams. Students work together in pairs and small groups to understand problems, design solutions, and construct code. They use test-driven design to verify that their solutions work. They perform code walk-throughs to compare their work with the rest of the class. The point is to make sure that everybody in the class arrives at a working solution, not to find out which students are capable of finding a solution on their own and which are not.
This class puts an emphasis on participating in community. We require students to attend local community events in the beginning, then we expect them to volunteer at and eventually lead community events. Like experienced developers, we use the community as our primary means for building a business network and finding employment.
Challenge yourself: Studies have shown that you learn the most when you have the most to lose - right after failure. For some people, it feels bad to feel stupid. For us, confusion is the first sign that we're learning and the first taste of fun times ahead.
This course teaches students how to become self-learners, how to challenge themselves to learn new skills through experimentation and trial and error. To that end, many exercises and quizzes are taken from around the web through a meticulous process to make sure the carefully curated work is relevant and high quality. The answers are all available to students if they look for them. None of these are tests in the traditional sense. If they wanted to, students could easily find, copy, and claim these answers for their own. However, this would all but guarantee that they do not acquire the skills necessary for employment. By participating in this course, students agree not to use Google, StackOverflow, or similar methods to simply find, copy, and claim answers to exercises and quizzes for their own work.
Teach: You don't fully understand something until you teach it to others. This class requires students to teach each other and gives them frequent practice in small, easy doses to help them become comfortable.
This also includes blogging and contributing to online fora like mailing lists and StackOverflow. Helping others in the community by relating what you know is an excellent way to earn a good reputation and build a personal brand. The reason this is such a wonderful time to be learning software development is because people are so willing to help each other. Students learn how to pay this forward.
After getting some basics under their collective belts, students will be requested to identify one or two potential capstone projects that they can accomplish in small teams. These projects should provide meaning or value on a topic the students find interesting. If they can't identify a project, Portland Code School and its network of partners and employers may have several to choose from.
Students will pitch these projects to the PCS staff and will collaborate with staff to scale the scope so that students have a good chance of success by the end of term (including some failures along the way!).
Students will present their completed projects to their fellow students, staff, and members of our employer network.
Details will be provided as the class proceeds.
We will cover material on three major themes: Code, Communication, and Career.
Students who have a documented disability and require a classroom adjustment or accommodation should expect to receive it. Please contact the instructor and/or the PCS Director.
The instructor reserves the right to modify course content and/or substitute assignments and learning activities in response to institutional, weather or class situations.
We adjust the class each session to the needs of the current students. We may slow the pace or add additional work, as needed. We also carefully incorporate new technologies as they become significant to your employability. As a result, we often are creating class materials as we go. You will always get advance notice of classwork.
You should all have access to a Google calendar called "PCS" and should have received an email to this effect. If you haven't, please contact Kristina, Cris, Dan, or Tom and we will make sure the class calendar is available to you. We will try to make sure this calendar is always up-to-date.