Skip to content
This repository has been archived by the owner on Oct 1, 2018. It is now read-only.

Latest commit

 

History

History
120 lines (102 loc) · 3.93 KB

Syllabus.md

File metadata and controls

120 lines (102 loc) · 3.93 KB

View the Conversation

Goals for this course

When a student finishes this course they should:

  • Know the basics of programming and how to solve problems programatically
  • Be competent with Ruby as a language and specific features to it ie enumerables
  • Have a exellent grasp of OOP and testing
  • Know about Files and serialisation and how to work with them
  • Know how to model software with OOP and know the best practices with general software and OOP design

Propsed Syllabus

Section: Programming Fundamentals

  • Lesson: Primitive Data Types
    • Strings, numbers and symbols
  • Lesson: Variables
    • What are variables and how to use them. Explain pass by reference.
  • Lesson: Input and Output
    • Puts, print and getting input from a user
  • Lesson: Conditional Logic
    • If and case statements. Boolean logic
  • Lesson: Loops
    • All the different loops in Ruby (Except enumerables)
  • Lesson: Collections
    • Arrays and hashes
  • Lesson: Basic Enumerables
    • What enumerables are and how they work. Explain each, map, select
  • Lesson: Methods
    • How to write your own methods
  • Lesson: Problem Solving
    • Approaches to problem solving
  • Lesson: Debugging Techniques
    • Some techniques for debugging
  • Projects
    • 4 or 5 projects to practice the fundementals

Section: Basics of OOP

  • Lesson: Why OOP?
    • What OOP is and what problems it solves
  • Lesson: Classes and Instances
    • Whats a class and instance and whats the difference between them
  • Lesson: Methods in OOP
    • Instance methods, class methods and getter and setter methods
  • Lesson: Inheritance
    • What is inheritance, what does it do.
  • Lesson: Method scope
    • Public, protected and private methods
  • Lesson: Modules
    • Whats a module, whats the difference between them and classes and what to use them for
  • Lesson: Working with Collaborator Objects
    • How to get your objects to work together
  • Lesson: Intermediate enumerables
    • Intermediate enumerables, inject, max, sort etc
  • Projects
    • 4 - 5 projects to practice OOP

Section: TDD

  • Lesson: Why TDD?
    • The philosophy behind TDD and its process
  • Lesson: Introduction to RSpec
  • Lesson: Structuring your tests
    • How to use describe and context in your tests
  • Lesson: Mocks, stubs and spies
    • What each of these are and when and how to use them
  • Lesson: What to test
    • The rules of what to test
  • Projects
    • 1 or 2 projects the user can practice testing on

Section: Files and Serialisation

  • Lesson: Files basics
    • The basics of using files
  • Lesson: Loading files
    • Require, load, require_relative etc
  • Lesson: Standard Ruby project set up
    • How to set up your ruby objects, lib and spec folder etc
  • Lesson: Serialization
    • Yaml and JSON
  • Projects
    • A couple of projects to practice using files

Section: Advanced OOP

  • Lesson: Ruby Object Model
    • How ruby finds which method to use.
  • Lesson: Solid Design Principles
    • Explain all the principles
  • Lesson: Basics of Refactoring and code smells
    • Basic code smells and solutions for refactoring them
  • Lesson: Composition over Inheritance
    • Why you should use composition over inheritance
  • Lesson: Basic Design Patterns
    • Some of the common design patterns the student will come across
  • Projects
    • A couple of projects to practice

Advanced Ruby

  • Lesson: Blocks Procs and lambdas
    • What these are and how to use them
  • Lesson: Advanced Enumerable’s
    • How to use enumerable in your own custom class
  • Lesson: Meta Programming basics
    • The basics of meta programming
  • Projects
    • A couple of projects, one for making your own enumerable methods. The other for meta programming

Wrapping up

  • Final project
    • Final project for this course
  • Lesson: Conclusion
  • Closing thoughts