Course materials for the Summer 2016 Day Class with PDX Code Guild.
Instructor: Andrew Hedges
Phone: +1 510 283-3629
Email: andrew@pdxcodeguild.com
Term: May 18 – August 12
Days: Monday – Friday
Hours: 9:30am – 4:30pm (with 1 hour for lunch)
Python-Based Junior Developer is an intensive, 12-week, part-time, hands-on, immersive course that combines individual projects and group study to give students the skills and habits they need to succeed as a junior developer.
Students learn Python, Django, JavaScript, SQL, HTML, CSS, as well as how to think like a programmer, and important developer practices including source control, testing, and debugging. Students practice skills using pair programming and group work, as well as work on personal portfolio projects.
The course is broken down into five sections. Each section has a number of competencies that will be incorporated into exercises and projects for each section. The sections are outlined below with technical and interpersonal objectives listed.
- Python
- Technical:
- Read, write and debug programs in Python, using professional tools and practices that meet industry expectations of a junior web developer and follow PEP 8 standards
- Use comments to clearly explain code
- Use command line, IDE/text editor, python packages and repositories
- Interpersonal:
- Be an effective pair programming partner (be courteous & flexible, communicate clearly, listen carefully, and be an active participant)
- Make effective use of 1-on-1 meetings with the instructor
- Understand your motivations, develop empathy for the motivations of others
- Technical:
- HTML/CSS
- Technical:
- Create a static website using HTML5 and CSS3
- Practice website file management
- Deploy website to host
- Find and correct errors/inconsistencies in HTML and CSS across Chrome, Firefox, and Microsoft Edge
- Interpersonal:
- Silence your inner critic by adopting a growth mindset
- Technical:
- JavaScript
- Technical:
- Read and write functional JavaScript
- Augment static website using JavaScript
- Use the JavaScript libraries jQuery, jQueryUI
- Interpersonal:
- Get comfortable with professional networking
- Give, receive, and integrate feedback through code reviews
- Recognize and manage stress and anxiety
- Technical:
- Django/SQL
- Technical:
- Use the Python web framework Django with Python, HTML, CSS, SQL and JavaScript to create a fully functional, modern website
- Use Python HTML, CSS, SQL and JavaScript to create a fully featured website
- Write code that uses the application-database relationship and common database components including data types, tables and stored procedures
- Interpersonal:
- Find a healthy balance between independently find answers to technical questions and asking for help (avoid ‘white knuckling’ problems)
- Understand how you handle conflict
- Understand the biases we all bring to our work
- Technical:
- Capstone
- Technical:
- Plan, design and implement a final project that demonstrates an understanding of all the topics covered, and how they work together for full stack web design
- Follow all industry standards for the languages and tools used
- Choose a final project that uses tools learned in class
- Break a problem down into steps and order the steps logically
- Utilize resources to find answers to questions that come up during building of the final project
- Work independently and as a team to manage time, communicate, be flexible and delegate
- Produce a final project that demonstrates mastery of programming skills and professional developer practices
- Interpersonal:
- Effectively present work to both technical and non-technical audiences
- Clearly communicate your skills and motivations in an interview setting
- Technical:
- Post-capstone
- Technical:
- Polish/improve capstone project in preparation for demo day
- Interpersonal:
- Write an effective resume
- Technical:
Grading is on a Pass With Distinction/Pass/Fail scale. Students are graded on each individual section based on specific in-class exercises and/or projects and tech challenges given at the end of each unit.
In-class exercises: Students edit and debug each exercise or project until it passes. All exercises and projects submitted for grading must pass for the student to pass the course. To receive a grade of Pass with Distinction, student must do more than the minimum required on exercises, successfully using additional skills outside the lesson, for exercises and work on their project.
Pair Programming: A portion of your grade in this section will be based on your interpersonal skills while pair-programming. You must pass pair-programming to pass the class.
Tech challenges: At the end of each unit, students will be given one or more problem to work on independently and one interactive challenge/code review. Tech challenges will be graded on a curve. Students must pass tech challenges in four of the five sections to pass the course.
To achieve grade of Pass With Distinction for the course, student must:
- Pass pair programming,
- Pass each exercise, with an overall grade of pass with distinction in four of the five sections
- Pass each tech challenge, and interactive challenge/code review, receiving a grade of pass with distinction on at least three of them
Students work on projects in class with the support of the instructor, other students, documentation and online resources. Students work on projects until they pass. Students are expected to keep up with the rest of the class. Students unable to keep up with the class will be asked to have a meeting with the instructor and director to develop a plan to get student caught up. If student fails to get back on track within two weeks, student may be asked to take a leave of absence until the student’s situation is changed sufficiently to allow student to keep up with the class.
PDX Code Guild maintains attendance records for each student. Students are expected to be on time and attend all scheduled class times. The school requires ninety percent (90%) completion of class hours in order to receive a certificate of completion from the course. If in any 14-day period your attendance is less than 90%, you will be notified and placed on probation for a period of 14 days. If you meet the attendance requirement in the subsequent 14 days, you will be removed from probation. If you fail to correct your attendance problem, you will be dismissed from the school.
If dismissed from the school, you will be eligible for re-admittance without filling out a new application after a minimum period of 60 days. You may be required to provide proof that the problem that caused your chronic absenteeism has been resolved.
Students are expected to comply with the PDX Code Guild Code of Conduct. Students are given a copy of the PDX Code Guild code of conduct and a copy of the school catalog containing the Code of Conduct and Policy on Code of Conduct Infringement upon registration. Please refer to your copy of the code of conduct and Policy on Code of Conduct Infringement sections of the school catalog for more information.
All work submitted must be the student’s own work. It is acceptable and expected that students will use online and print resources and work with classmates to complete assignments. It’s normal in programming to use bits of code that someone else has written. Be careful when doing this; you must make sure that you understand what each line of code does. Give credit when you work with others or use parts of existing code.
For example:
# based on: http://stackoverflow.com/a/931095/11577
reversedStr = 'Eva, can I see bees in a cave?'[::-1]
It is unacceptable to copy someone else’s work in its entirety and submit it as your own work.
The course is broken into 5 major themes:
- Python
- HTML/CSS
- JavaScript
- Django/SQL
- Capstone Project
The following is the rough schedule we will follow. I say ‘rough’ because we can adjust to some degree if, for example, it takes more/less time to cover certain topics or the class is interested in spending more time on a particular subject.
Weeks 1, 2, 3: Python
Week 4: HTML/CSS
Weeks 5, 6, 7: JavaScript
Week 5: Start capstone proposal
Week 6: Capstone proposal due
Weeks 8, 9, 10: Django
Weeks 10, 11, 12: Capstone project
Week 12: Capstone project due by end of the last day of class
Post Class Weeks 1, 2: Capstone revisions/additions/polish
Post Class Week 3: Capstone Demo Day
My goal is to structure the class as much like a developer job as possible. To that end, below is a high-level overview of how a typical week will flow.
- Monday
- Morning:
- Assign pair programming partner for the week
- Discuss learning objectives for the week (technical & interpersonal)
- Go over assignments for the week (i.e. sprint planning)
- Instruction on that week’s interpersonal skill
- Afternoon:
- Instruction on technical concepts
- Morning:
- Tuesday, Wednesday, Thursday
- Mornings:
- Instruction on technical concepts
- Afternoons:
- Work on assignments in pairs
- Mornings:
- Friday
- Morning:
- Retrospective/demos
- Afternoon:
- 20-30 minute 1-on-1
- Work on assignments in pairs
- Morning:
Additionally, when possible, I’ll bring in external speakers to talk about topics of interest. These will be no more than 1 hour, once per week.
Much like you will when working as a web developer, you will be expected to gather & clarify requirements for assignments. I will act as the ‘product owner’ and you will need to communicate status to me throughout the week. Our TA and I will also act as ‘senior developers’ in the sense that you will be able to ask us for help in working through technical aspects of the assignments.
Students are required to bring and use their own laptop for the course. Any operating system is fine, but the machine should be new enough to run several applications at once without slowing down considerably.
If you don’t already, make sure you have all of the following installed on your system:
For the sake of convenience, you may wish to set up your system so that typing the command python
at the command line launches Python 3, rather than your system default (usually Python 2.7). Here are directions for how to do that on OS X.
Here is how I have my ~/.bash_aliases
file set up:
alias python='python3'
alias python2='\python'
By using the above, I can type python
to default to Python 3, but still launch Python 2 by typing python2
. 99% of the time in class we will be using Python 3.
Open Atom and install the following packages:
- python-tools
- python-indent
- python-debugger
- autocomplete-python
- language-python
- python-autopep8
- linter-python-pep8
Our Slack team is portlandcodeguild.slack.com. If you don’t already have an invite, let me know. Our class channel is #hedges-summer-2016.
We will be using GitHub to collaborate. If you don’t already have an account, create one now then post your username in the class Slack channel.
The GitHub repo for our class is at github.com/segdeha/pdxcodeguild
We will be using Trello to manage assignments. If you don’t already have an account, create one now then post your username in the class Slack channel.
I recommend creating an account on Stack Overflow, if you don’t already have one. The site will quickly become your best friend when you run into problems or have programming questions.