NCSU brick logo

CSC/ECE 517: Object-Oriented Design and Development

Spring 2025

course schedule: lectures

Toggle Sections

Lecture Schedule

Week 1[ 01/05 - 01/11 ]

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

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

Week 2[ 01/12 - 01/18 ]

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

2.1 How to Learn a new Language or Framework: Ruby [7:41]  Video  
2.3 Ruby Basics part 1/3 - Types, Variables, and Primitives [12:32]  Video  
2.3 Ruby Basics part 2/3 - Types, Variables, and Primitives [9:48]  Video  
2.3 Ruby Basics part 3/3 - Types, Variables, and Primitives [8:25]  Video  
2.4 Ruby Idioms part 1/2 Blocks [13:28]  Video  
2.4 Ruby Idioms part 2/2 Duck Typing and Mix-Ins [13:15]  Video  

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

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

Week 3[ 01/19 - 01/25 ]

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

4.1: Part 3 - Rails as an MVC Framework [13:34]  Video  
4.2: Active Record (The Glue) Part 1 - Find [20:14]  Video  
4.2: Active Record Part 2 - Create [8:23]  Video  
4.2: Active Record Part 3 - Update and Destroy [9:45]  Video  
4.2: Databases and Migrations [14:51]  Video  

[Fri 01/24] 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/26 - 02/01 ]

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

4.4 Part 1 Controllers and views [2:09]  Video  
4.4 Part 2 Redirection, the flash, and the session [6:00]  Video  
4.6 Part 1 Creating forms [16:48]  Video  
4.6 Part 2 Strong params for forms [9:23]  Video  
4.6 Part 3 Forms summary [2:45]  Video  
5.4 Associations Part 1: Foreign keys [6:02]  Video  
5.4 Associations Part 2: Active-record associations [6:15]  Video  
Typing form events (React + TypeScript) [10:33]  Video  

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

AmazeZone app: instructions and submission  Submit  See

Week 5[ 02/02 - 02/08 ]

[Thu 02/06] Lecture 8: (online) Behavior-driven design, Cucumber & Capybara
Online videos

7.1 Behavior-Driven Design and User Stories [6:59]  Video  
7.2 SMART user stories [12:10]  Video  
7.3 Lo-Fi UI sketches and storyboards [5:35]  Video  
7.4 Points and Velocity [6:34]  Video  
7.6 Part 1 - From Stories to Acceptance Tests: Introducing Cucumber [9:50]  Video  
7.6 Part 2 - Introducing Capybara [6:56]  Video  Examples  
7.6 Part 3 - Basic Cucumber & Capybara demo [18:14]  Video  
7.6 Part 4 - More advanced Cucumber & Capybara demo [13:28]  Video  

[Fri 02/07] Test 1

Week 6[ 02/09 - 02/15 ]

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

8.1: Part 1 - The big picture: FIRST, TDD, and red-green-refactor [8:10]  Video  
8.1: Part 2 - Testing today: FIRST [6:26]  Video  
8.2: Anatomy of a Test Case - Arrange, Act, Assert [10:45]  Video  
8.6: Part 1 - Fixtures & factories [10:16]  Video  
8.6: Part 2 - When fixtures vs. when factories? [6:59]  Video  
Introduction to design patterns and singleton pattern [19:43]  Video  

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

Consent for TDD research study  Submit  
Assign me to a Typescript project, if possible  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/16 - 02/22 ]

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

9.1: What Makes Code "Legacy" and How Can Agile Help? [8:14]  Video  
9.2: Approaching a Legacy Codebase [7:38]  Video  
9.3: Establishing Ground Truth With Characterization Tests [5:27]  Video  
9.4: Comments & Commits - Tell Me a Story [8:24]  Video  
9.5: Beyond Correctness - Smells, Metrics, and SOFA [15:10]  Video  
9.6: Part 1 - Intro to Method Level Refactoring [14:44]  Video  
9.6: Part 2 - Reflections on Refactoring [4:37]  Video  

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

Evaluate your Program 2 mentor  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
Another responsibility of Invitation  Submit  See
What to do when accepting an Invitation  Submit  See
What else to do when accepting an Invitation  Submit  See
Responsibilities of ProjectTopic  Submit  See

Week 8[ 02/23 - 03/01 ]

[Thu 02/27] Lecture 13: (online) Design patterns
  • Lecture notes, etc.
Online videos

Adapter Pattern [7:29]  Video  Examples  
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/28] Lecture 14: SOLID principles
In-class exercises

Consent for TDD research study  Submit  
PingPong TA chatbot survey  Submit  
Single Responsibility principle  Submit  See
Single Responsibility: separating classes  Submit  See
Single Responsibility principle (Ruby)  Submit  See
Single Responsibility principle (Java)  Submit  See
Open/Closed principle  Submit  See
Open/Closed principle (Ruby)  Submit  See
Open/Closed principle (Java)  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/02 - 03/08 ]

[Thu 03/06] 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/07] Lecture 16: O-o fundamentals
In-class exercises

Consent for TDD research study  Submit  
PingPong TA chatbot survey  Submit  
Interest in independent study/thesis topics  Submit  See
Example of a bad name  Submit  See
Why create your own Stack class?  Submit  See
Delegation: fill in the blanks  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

Week 10[ 03/16 - 03/22 ]

[Thu 03/20] 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/21] Test 2

Week 11[ 03/23 - 03/29 ]

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

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

[Fri 03/28] Lecture 19: Elegance and classes, Factory Method, Abstract Factory
In-class exercises

Consent for TDD research study  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  See

Week 12[ 03/30 - 04/05 ]

[Thu 04/03] Lecture 20: (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/04] Lecture 21: State, Strategy, Visitor
In-class exercises

Design-pattern identification 1  Submit  
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 2  Submit  

Week 13[ 04/06 - 04/12 ]

[Thu 04/10] Lecture 22: (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/11] Lecture 23: Review
In-class exercises

Sign up for a demo time  
Permission to use software developed in this course  Submit  
Design-pattern identification  Submit  

Week 14[ 04/13 - 04/19 ]

[Thu 04/17] Lecture 24: (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  

Week 15[ 04/20 - 04/26 ]

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