NCSU brick logo

CSC/ECE 517: Object-Oriented Design and Development

Spring 2024

course schedule: lectures

Toggle Sections

Lecture Schedule

Week 1[ 01/07 - 01/13 ]

[Fri 01/12] Lecture 1: Course overview; use cases, refactoring, version control
In-class exercises

Use-case quiz  Submit  
Refactoring example  Submit  
Git commands  Submit  
Non-conflicting and conflicting changes  Submit  

Week 2[ 01/14 - 01/20 ]

[Thu 01/18] Lecture 2: (online) Introduction to Ruby
  • Lecture notes, etc.
Online videos

Intro to Ruby for Java programmers [13:43]  Video  Examples  
Everything is an object, every operation is a method call [8:28]  Video  Examples  
Ruby OOP [4:32]  Video  Examples  
All programming is metaprogramming [7:05]  Video  Examples  
Blocks, iterators, functional idioms [8:45]  Video  Examples  

[Fri 01/19] Lecture 3: Modules & mixins, reflection
In-class exercises

Your github.com account  Submit  
Web-based Ruby console  Submit  
Inheritance and modules  Submit  
Comparable: Battle of Minions  Submit  
Factorial using inject  Submit  
Yield  Submit  
Reflection methods  Submit  
Collection operators  Submit  

Week 3[ 01/21 - 01/27 ]

[Thu 01/25] Lecture 4: (online) Mixins, yield, intro to Rails
  • Lecture notes, etc.
Online videos

Mixins and duck typing [7:43]  Video  Examples  
Yield in Ruby [8:20]  Video  Examples  
Hello Rails: from zero to CRUD [10:49]  Video  Examples  
Active-record basics [8:55]  Video  Examples  
Database and migrations [9:45]  Video  Examples  
Models: Finding, Updating, Deleting [11:26]  Video  

[Fri 01/26] Lecture 5: Rails and the Cookbook app
In-class exercises

Cookbook installation instructions  See
Assign me to a team for Program 2?  Submit  
Arrange statements in the index method of recipe.rb  Submit  See
What happens when a category that has a recipe is deleted?  Submit  See
Questions on menu at the bottom of all screens  Submit  See
Confirming an action  Submit  See
Review questions  Submit  See
Routes  Submit  See
Adding validations  Submit  See
Relationship between recipes and categories  Submit  See
Fixing the deletion glitch  Submit  See
Steps in showing a recipe  Submit  See
Questions about new.html.erb  Submit  See
Program 2 requirements inspection  Submit  

Week 4[ 01/28 - 02/03 ]

[Thu 02/01] Lecture 6: (online) Rails controllers, routing, and debugging
  • Lecture notes, etc.
Online videos

Routes, controllers and views [22:39]  Video  
Forms [6:00]  Video  Examples  
Redirection, the flash, and the session [9:24]  Video  Examples  
Finishing CRUD [6:11]  Video  Examples  
Associations and foreign keys [13:43]  Video  

[Fri 02/02] Lecture 7: Practice Developing a Rails App
In-class exercises

AmazeZone app: instructions and submission  Submit  See

Week 5[ 02/04 - 02/10 ]

[Thu 02/08] Lecture 8: (online) Testing & design patterns
Online videos

Overview of testing [3:23]  Video  
FIRST, TDD and introduction to RSpec [10:53]  Video  
Anatomy of a test case - Arrange, Act, Assert [11:15]  Video  
Fixtures and factories [10:31]  Video  
Introduction to design patterns and singleton pattern [19:43]  Video  

[Fri 02/09] Test 1, EB I 1007 and 1011

Week 6[ 02/11 - 02/17 ]

[Thu 02/15] Lecture 9: (online) Design patterns
Online videos

Adapter Pattern [7:29]  Video  
Observer Pattern [22:26]  Video  Examples  
Builder pattern [13:04]  Video  Examples  
Agile Methodology [13:20]  Video  
Scrum [7:06]  Video  
Introduction to Agile Scrum [8:52]  Video  

[Fri 02/16] Lecture 10: Testing in Rails/Agile exercise
In-class exercises

Assign me to a team for the first OSS project  Submit  
What kinds of tests are these?  Submit  See
Fixtures: what is automatically generated?  Submit  See
Databases in Rails projects  Submit  See
What else could you test about recipes?  Submit  See
Functional tests  Submit  See
Team for White Elephant Sizing  Submit  See

Week 7[ 02/18 - 02/24 ]

[Thu 02/22] Lecture 11: (online) Behavior-driven design, Cucumber & Capybara
  • Lecture notes, etc.
Online videos

Behavior-Driven Design and User Stories [9:48]  Video  
Smart user stories [13:23]  Video  
Points and Velocity [6:34]  Video  
Agile Cost Estimation [2:49]  Video  Examples  
Introducing Cucumber & Capybara [4:37]  Video  Examples  
Running Cucumber & Capybara [6:49]  Video  
Lo-Fi UI sketches and storyboards [6:55]  Video  

[Fri 02/23] Lecture 12: O-o intro & CRC-card design
In-class exercises

Consent for TDD research study  Submit  
Tagging exercise  Submit  
Nouns that represent classes  Submit  See
Nouns that do not represent classes  Submit  See
Responsibilities/collaborators of Customer  Submit  See
CRC cards for Flight Reservation system  Submit  See
Design exercise  See

Week 8[ 02/25 - 03/02 ]

[Thu 02/29] Lecture 13: (online) Behavior-driven design & refactoring
  • Lecture notes, etc.
Online videos

Enhancing Rotten Potatoes Again [10:00]  Video  
Explicit vs. Implicit and Imperative vs. Declarative Scenarios [2:53]  Video  
Fallacies and Pitfalls, BDD Pros and Cons [3:07]  Video  
More Controller Specs and Refactoring [13:07]  Video  
More Controller Specs and Refactoring continued.. [9:54]  Video  

[Fri 03/01] Lecture 14: SOLID principles
In-class exercises

Single Responsibility principle  Submit  See
Open/Closed principle  Submit  See
Liskov Substitution principle (Ruby)  Submit  See
Liskov Substitution principle (Java)  Submit  See
Interface Segregation principle (Ruby)  Submit  See
Interface Segregation principle (Java)  Submit  See
Dependency Inversion principle (Java only)  Submit  See
SOLID Principles review  Submit  See

Week 9[ 03/03 - 03/09 ]

[Thu 03/07] Lecture 15: (online) Writing meaningful tests
  • Lecture notes, etc.
Online videos

Using SimpleCov to check C0 Coverage [3:26]  Video  
The Magic Tricks of Testing [32:22]  Video  
Where to Test Functionality [9:23]  Video  
Design patterns video tutorial: Basic OOP Concepts [15:02]  Video  

[Fri 03/08] Lecture 16: O-o fundamentals
In-class exercises

Consent for TDD research study  Submit  
Interest in independent study/thesis topics  Submit  See
Example of a bad name  Submit  See
Subtype polymorphism example  Submit  See
Which method is called -- Take 1  Submit  See
Which method is called -- Take 2  Submit  See
Which method is called -- Take 3  Submit  See
Singleton exercise  Submit  See
Adapter exercise  Submit  See
Design-pattern identification  Submit  See

Week 10[ 03/17 - 03/23 ]

[Thu 03/21] Lecture 17: (online) Patterns: Decorator, Proxy, Façade; Elegance & inheritance
  • Lecture notes, etc.
Online videos

Decorator pattern [12:57]  Video  Examples  
Proxy Pattern [8:12]  Video  Examples  
Façade pattern [11:31]  Video  
Elegance and Inheritance [16:35]  Video  

[Fri 03/22] Test 2, 1:50-3:50 PM, EB I 1007 and 1011

Week 11[ 03/24 - 03/30 ]

[Thu 03/28] Lecture 18: (online) Patterns: Chain of Responsibility, Prototype, Flyweight
  • Lecture notes, etc.
Online videos

Chain of Responsibility pattern [8:42]  Video  
Prototype pattern [7:58]  Video  Examples  
Flyweight pattern [13:17]  Video  Examples  

Week 12[ 03/31 - 04/06 ]

[Thu 04/04] Lecture 19: (online) Patterns: Composite, Iterator, Visitor
  • Lecture notes, etc.
Online videos

Composite pattern [16:46]  Video  Examples  
Iterator pattern [19:57]  Video  Examples  
Visitor pattern [13:30]  Video  Examples  

[Fri 04/05] Lecture 20: Elegance and classes, Factory Method, Abstract Factory
In-class exercises

Consent for research project on trace-driven development  Submit  
compareTo vs. Comparator  Submit  See
Keeping track of a traversal  Submit  See
High and low coupling  Submit  See
Uses of class variables and methods  Submit  See
Law of Demeter exercise  Submit  See
Factory Method exercise (streaming)  Submit  See
Factory Method exercise (postcodes)  Submit  See
Abstract Factory furniture example  Submit  See
Abstract Factory exercise (frameworks)  Submit  See
Abstract Factory exercise (postcodes)  Submit  See
Design-pattern identification  Submit  

Week 13[ 04/07 - 04/13 ]

[Thu 04/11] Lecture 21: (online) Patterns: Mediator, Bridge, Memento
  • Lecture notes, etc.
Online videos

Mediator pattern [18:30]  Video  Examples  
Bridge pattern [14:51]  Video  Examples  
Memento pattern [20:29]  Video  Examples  

[Fri 04/12] Lecture 22: Delegation, State, Strategy, Visitor
In-class exercises

Consent for research project on trace-driven development  Submit  
Your concerns about consenting  Submit  
Why create your own Stack class?  Submit  See
Delegation: fill in the blanks  Submit  See
A State interface  Submit  See
How should States be defined?  Submit  See
Methods for State pattern for floating-point FSM  Submit  See
Strategy pattern: fill in the blanks  Submit  See
Double-dispatch arithmetic  Submit  See
Visitor pattern: Fill in the blanks  Submit  See
Design-pattern identification  Submit  See

Week 14[ 04/14 - 04/20 ]

[Thu 04/18] Lecture 23: (online) Patterns: Command, Interpreter, Template Method
  • Lecture notes, etc.
Online videos

Command pattern [23:40]  Video  Examples  
Interpreter pattern [22:22]  Video  Examples  
Template Method pattern [14:04]  Video  Examples  

[Fri 04/19] Lecture 24: Review
In-class exercises

Consent for research project on trace-driven development  Submit  
Sign up for a demo time  Submit  See
Permission to use software developed in this course  Submit  
Design-pattern identification  Submit  

Week 15[ 04/21 - 04/27 ]

[Fri 04/26] Final Exam, 7:00-9:30 PM, EB II 1025
©2007-2022 NC State University | Disclaimer
back to top