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
- 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
- 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
- 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
- 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
- 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
- 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
- Final project
- Final project for this course
- Lesson: Conclusion
- Closing thoughts