https://github.com/chrisvfritz/tc359_syllabus
https://github.com/chrisvfritz/tc359_syllabus
Last synced: about 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/chrisvfritz/tc359_syllabus
- Owner: chrisvfritz
- Created: 2015-01-09T23:27:00.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2015-04-06T02:48:31.000Z (about 10 years ago)
- Last Synced: 2025-01-07T08:34:06.829Z (4 months ago)
- Size: 233 KB
- Stars: 0
- Watchers: 3
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Course description
TC359 is designed to introduce you to developing simple webapps in Ruby, with the Sinatra and Rails frameworks. If you excel in this course, you should be ready to found your own tech startup or apply for a junior position as a Rails developer.
## Instructor
**Chris Fritz**
Email: [email protected]
Hours: by appointment ([schedule a 15-minute Hangout](https://calendly.com/chrisvfritz/15min) **OR** email me for an in-person meeting)
- - -
## Schedule
### Week 1 (1/12)
- [Get to know each other](http://codekwondo.herokuapp.com/skills/9)
- [Get to know the course](http://codekwondo.herokuapp.com/skills/10)
- [Set up your computer for the course](http://codekwondo.herokuapp.com/skills/15)### Week 2 (1/19): NO CLASS (Martin Luther King Day)
### Week 3 (1/26)
- [Build a simple webapp with Sinatra](http://codekwondo.herokuapp.com/skills/19)
- [Serve HTML files with Sinatra](http://codekwondo.herokuapp.com/skills/32)
- [Organize static assets in Sinatra](http://codekwondo.herokuapp.com/skills/26)### Week 4 (2/02)
Due to the snow day for section 1, I'm modifying this week's assignment to fit better for out-of-class work. Students in this course have a lot of different areas of expertise. To take advantage of this diversity, each student is to do three things:
1. Request at least 1 new resource related to some aspect of web development in the TODO section [of the TC359 Resources Planning doc](https://docs.google.com/document/d/1aQQB_tLIPC77CGKkEnziBXkEaqb6zFBhxP2vAQXuGIY/edit). **This should be done before Wednesday at 12pm (noon).**
2. Claim a resource (that you didn't request yourself), by **moving** (NOT copying) the resource to a DOING section and appending your GitHub username in parentheses (e.g. `How to "undo" a commit in Git (chrisvfritz)`). If you can't find a resource you feel qualified to create, then contact me by email before the end of the day on Wednesday and I'll find something for you. **You must claim a resource before the end of the day on Thursday.**
3. Create a resource in [Markdown](https://help.github.com/articles/markdown-basics/) (`.md`) or Plain Text (`.txt`), organized in a logical place in [our tc359_cheatsheets GitHub repo](https://github.com/chrisvfritz/tc359_cheatsheets). **The final resource should be live and polished before our next class on 2/09.****Q: What if I'm not sure where I could improve?**
A: If you'd like ideas for areas you could work on, I recommend checking out [this map of related knowledge areas](https://www.dropbox.com/s/3r51p9oo9msyzxv/rails_competencies_with_curriculum.png?dl=0). You can also talk to me in class (if you're in section 2) or email me if you'd like some help.
**Q: Why are we doing this?**
A: This gives us a chance to individually balance out our skillsets and is also an exercize in proactive personal development - an essential skill of a good web developer.
If you have any questions, don't hesitate to email me or [open up a new GitHub issue](https://github.com/chrisvfritz/tc359_syllabus/issues/new) if you think these instructions need clarification.
### Week 5 (2/09)
- [Use Twitter Bootstrap to make websites not look terrible, even if you're not a designer](http://codekwondo.herokuapp.com/skills/27)
- [Dry up Sinatra views with a layout file](http://codekwondo.herokuapp.com/skills/29)### Week 6 (2/16)
- [Embed Ruby in Sinatra](http://codekwondo.herokuapp.com/skills/20)
### Week 7 (2/23)
- [Use forms for more dynamic Sinatra views](http://codekwondo.herokuapp.com/skills/33)
### Week 8 (3/02)
- [Organize code in helper methods in Sinatra](http://codekwondo.herokuapp.com/skills/40)
### Week 9 (3/09): NO CLASS (Spring Break)
### Week 10 (3/16)
- [Build a simple Rails app with static pages](http://codekwondo.herokuapp.com/skills/31)
### Week 11 (3/23)
- [Attach a single model to a Rails app](http://codekwondo.herokuapp.com/skills/41)
### Week 12 (3/30)
- [Authentication (and very basic authorization) in Rails](http://codekwondo.herokuapp.com/skills/42)
### Week 13 (4/06), Week 14 (4/13), Week 15 (4/20), Week 16 (4/27)
We now all have a Rails project, with a single model and some very basic authentication. Those are the basics that you'll need for pretty much *any* app. From here though, there are *so many* things we could work on.
Web development is a freakin' huge topic. In terms of languages, you could dive deeper into Ruby, Bash, CSS, SCSS, Less, JavaScript, CoffeeScript, ECMAScript 6, ERB, HAML, Slim, and more. Libraries and features you could learn to integrate are practically endless.
Combined with the fact that your interests and career goals are extremely varied, it makes more sense for us to branch out at this point. To facilitate this, the rest of the semester will work a little differently.
#### We've reached the 3.0 mark
Everyone with approved projects for up to and including *Authentication (and very basic authorization) in Rails* has a 3.0 in the course. Congratulations! You should also know by now if you have any interest in web development. If you don't, that's OK and you can focus your energies elsewhere if you'd like.
That means **I will no longer be enforcing the attendance policy, *except* for on the last day of class (4/27)**. I know this last stretch of the semester can be very busy, so use this time how you see fit.
#### How to earn a 4.0
If you want a 4.0, we'll be working on a single portfolio repository for the rest of the semester, optionally based off the Rails app you've built so far. **This will be in a GitHub repository called `tc359_rails_final` and will *not* be evaluated through Codekwondo**.
Instead, we're simply using Codekwondo to *organize* the skills available to master. Each of these skills begins with a number in parentheses. `(1)` means it's worth 1 point, `(2)` means it's worth 2 points, etc. Each point is worth 0.2 towards your final grade, meaning you need 5 more points to earn a 4.0 in the course.
At the time of writing, there are already 14 skills available, worth up to 20 points, so you certainly don't have to complete all of them! If you do choose to go above and beyond however, I will still be happy to give you feedback. If you think of another skill you'd like to master to improve your project, let me know and I'll add it! Make sure to also check out [the graph of skills](http://codekwondo.herokuapp.com/courses/4#dag), which maps out prerequisite relationships, so that you don't attempt a skill you're not ready for.
It's worth noting that these skills are also quite different from previous ones. We're taking yet another step closer to the kind of work you would do as a real developer. For each skill, I've gathered some resources to help you master it, but it's your job to figure out how to use those resources - and others you might find - to solve the problem you chose. Research is *incredibly* important in web development, since the field is constantly changing, and the best-paying jobs require frequently learning new things.
This certainly does *not* mean you can't ask for help or pick my brain. Asking for help is still very important and in most entry positions, more senior developers would exist as a resource when you're stuck or even fear that you're doing things the wrong way. As always, I'm happy to help as often as I'm needed.
#### What to do when working on a skill
When you want to start working on a skill, here's what you do:
1. Open an issue on your `tc359_rails_final` repo, titled with the name of the skill you're working on.
2. Ping me with `@chrisvfritz` for any questions you have while working on this skill.
3. Add any great resources you find while working on that skill to the resources list on Codekwondo.
3. Ping me with `@chrisvfritz` when you think you've met the requirements listed in the slides.
4. When I post a comment on that issue with a :+1:, it's officially approved.#### Working on your own timeline
You'll work on these projects on your own timeline, though **they must be completed by the end of the day on 4/27, then approved by the end of the following Friday (5/1)**, for them to count toward your final grade.
Since you're managing your own timeline, this also means that **the strike policy for missed deadlines will no longer be relevant through the end of the course**.
## Projects
Skills to be mastered each week are listed directly below that week in the above schedule. For each skill that has a project, that project is due before the next time we meet.
- - -
## Grading
All grading in this course will be through self-assessment on the Codekwondo learning platform.
### Cheating
Cheating in the class results in immediate failure of the course. What constitutes cheating? One example would be trying to deliver a duplicate of someone else's assignment, when it's not a group project. As a general rule though, if it feels dishonest, it's cheating. If there's something you're not sure about, ask me first to make sure.
### Not Trying
I really, *really* want each and every one of you to succeed. In fact, I'm more than happy to put in a lot of time outside of class giving you feedback and answering questions. And there are *never* too many questions. In order to make this time though, I make less time for people who don't try.
Here's what trying looks like:
- Show up
- Ask for help when you need it
- Don't lie to meIf you do those things, I will bend over backwards to help you. And to ensure that I can *make that time* to help you, **I have a 3 strikes rule.** When you earn 3 strikes, you fail the course (unless there are very special circumstances). These are the activities that could earn you a strike:
#### Missed deadlines
In a real job, your boss probably isn't going to dock your pay for not meeting a deadline. So I'm not detracting any points. If you're going to miss a deadline though, I'd like to hear from you explaining why *beforehand*, with a plan for how you'll avoid missing deadlines in the future.
If I *don't* hear from you, I'll worry and check in to make sure you're OK. I really want you to succeed. I also have to give you a strike though. Just like in a real job, it's unacceptable to simply not do work, hoping your boss doesn't notice.
#### Submitting incomplete work
Similarly, if you submit a project that *clearly* doesn't meet the criteria, that's a strike. I want to give you really great feedback, but if I keep having to hand out really obvious feedback, like "Umm... it's not done," then that's less time I have for people who really want to grow.
### Absences
Absences have a separate 3-strike policy. We'll be doing a lot of our work online, but we'll also be doing a lot of work in class. The rule is 3 absences, explained or not, and you fail the course (again, unless there are very special circumstances). If you're more than 5 minutes late, that's counts for half an absence. We only have 14 classes. If you miss 3 of them, that's over 20%. What job are you allowed to not show up for 20% of the time?