CSC321.01 2015F, Class 14: Course Wrapup
- Notes on grading.
- The subject matter(s) of the course.
- Final comments.
- Happy last day of class!
- Today is mostly focused on debriefing.
- Food in the commons (left over from Hour of Code).
- You are expected to show up to the final next Thursday at 2pm.
- Essay: 20%
- Percent of reflections submitted on time: 35%
- Slight downward scaling for reflections not taken seriously
- Additional downward scaling for late reflections
- Percent of programming assignments submitted on time: 35%
- Participation/Attendance: 10%
The Subject Matter(s) of the Course
- Primary Technologies: Ruby and Rails
- Additional Technologies
- Software Design
- Agile Programming
- Software as a Service
- General Skills
Primary Technologies: Ruby and Rails
- Basic syntax of Ruby
- Convention over configuration
- If you don't understand convention, you make bad choices
- Routes in Rails
- Gems! People have written things that you can use, and it's normal
practice to add these things.
- Meta programming. Code that develops code dynamically.
- How to use migrations and things like that.
- "Bundle install"
- Deploying to Heroku
- How to start a Rails app
- How not to start a Rails app
- The parts of a Rails app
- Cucumber - A gem for BDD
- RegEx - Patterns
- Rails tools like rake
- Rspec - For TDD
- Git / Version control
- Deprecation - Things change, sometimes faster than you want.
- Dependencies - One thing you want requires five things you don't know
- Multiple environments - development, production, test, etc.
- Cloud 9 - Development on virtual machines
- Capybara - Web step definitions
- A bit about design patterns
- Legacy code and how to deal with it
- Code smells - and what causes them
- Different models of testing
- Different metrics of code quality
- Architecture of large systems
- Behavior-Driven Development
- Test-Driven Design
- Iterative design
- Agile approaches to legacy
- User stories
- Different roles, such as Scrum master
- Testing metrics
- Project velocity
- Pair programming
Software as a Service
- Communication via APIs
Other CS Skills
- Pair programming in the cloud
- Duck typing as something in programming languages
- Different approaches to OOP than in Java
- A bit about databases
- The dynamic of dealing with ill-defined problems - should we Google, should
we try to understand, do we understand correctly?
- Relying on existing resources.
- Ethics (we wield much power, we should use it appropriately)
- Building the project builds the knowledge - you have to venture out into
the real world
- Dealing with incomplete and ill-formed requirements ("The homework is
somewhere on the Web site; figure out when it's due and how to submit it.")
- Working with others, even when you don't want to and when neither of you
know what's going on
- Collaborating beyond your close partners
- Research methods (How to use Google and Stackoverflow better)
- "There's more to life than CS"
- How to deal with unexpected questions from an authority figure (more or less)
- Using MOOCs/SPOCs, particularly ones that are not quite up-to-date
- More self-directed learning
- Choosing resources - Is video or text better?
- Thinking about deeper reading
- TLAs and TPLAs and Buzzwords (how to sound more impressive while
confusing those around you)
You know the drill. I'll leave the room while you fill out the evaluation
Things that will change
- Half-semester, full-time
- Too fast; Worry that next semester will be even faster
- I will know more of the material
- I'll try to keep the Web site up to date
- I'll try to provide more feedback
Things that won't change (at least for the near future)
- The book/site
- Who is teaching the course
How did you feel about the following approaches?
- "Focused" small group/large group discussion in class.
- It's hard to have a good big-group discussion
- Small group is good; speed it up
- This feels more factual; lecture might be useful; more "work
through the example" would be good
- Need more examples, perhaps examples to work through
- Seems like a bit of a binary - If you understood it, the time wasn't
useful; if you didn't understand it, the small group got stuck.
- More time to work on the homework in class, with advice.
- Success days: Early in the semester, first code smells, two ethics
- Applying the reading to a new problem would be a good model.
- More info on what the goals of assignments was (logic or convention)
- Taste of the approach
- Start to learn convention
- Disconnect between class and homework
- For three fifty minute classes, about 1:1 or 1:2 talk/code
- We covered a lot of material, but none of it deeply. Should we
focus it more tightly?
- Planning is hard for a one-day-a-week course.
- Timeboxed homework assignments.
- Good idea; relieved stress. (Or at least necessary.)
- Having available solutions would be good.
- More feedback would be good.
- Compendium of knowledge to get around the stupid things so that
you can focus on the more important things.
- Mixed text/video.
- The book was not great in Kindle format; some parts that were hard
- (Printed copies around the department would help.)
- Need more support / less work / more focused work / better scale of
projects / improved schedule
- Find a better ruby tutorial
- There's not enough information to let you do the assignments. The
book did not prepare students well enough for the homework.
- Use a Rails book (or a Rails site) to learn things, use this book
for the higher-level overview. Gap between homework and book.
- Make it Grinnellian - have one of us write the readings and such (or at
least supplemental readings and such).
- Focus on big-picture ideas rather than particular skills; skills we change
and you will learn them on your job.
What are things that went well?
- This class was special.
- Take time to say goodbye.