Lecture Schedule

Lec. No. Lecture Topics Lecture Materials Readings Optional
Activities
(no assessment)
1 Objects and Classes zip  Watch Myth of Genius Programmer On learning programming languages – Larry Wall, Bjarne Stroustrup
2-3 Understanding Class Definitions zip  Prof. Edgar Dijkstra – Why is Software So Expensive? Smarts Don’t Guarantee Success – Brandon Adams
4-5 Object Interaction zip  Message Oriented Programming, Brian Knapp  Hiring Good Programmers by Jason Fried, 37Signals
6-7 Grouping Objects zip Martin Fowler – Collection Pipelines, Refactoring loops to collection pipelines  Interviews – Bjarne Stroustrup, Larry Wall
8-9 More Sophisticated Behavior zip  Collections Code
Collections lecture @ MIT
 More thorough review – Part-I, Part-II
10 UML Diagrams – Class, Object and Interaction Diagrams zip Read Collaboration between Objects, PlantUML Prof. Jennifer Widom – UML Data ModelingUML to Relations

Data Modeling for MySQL

11 Designing Classes  zip  Workflows of Refactoring – Martin Fowler
12  Enumerated Types
13-14 Review class
15-17 Well-Behaved Objects zip Test Driven Development by JB Rainsberger
18-20  Testing zip  Brian W. Kernighan on Testing XP 20 Years Later by Kent Beck
21 Improving Structure with Inheritance  zip Quarks of Object Oriented Development, Why Inheritance is Bad
22-23 More About Inheritance  zip  Readings on Instanceof-Bill Venners, John O’Hanley  Chapters 1 – 6 of Introduction to OOP using C++
24-25 Further Abstraction Techniques  zip Implementing Equals  Designing with Interfaces, Bill Venners (advanced material)
 26-27 Handling Errors  zip Transitioning from BlueJ to Java
Read Exception-Handling
Best Practices and Patterns
NIO and IO,
NIO Tutorial by Jenkov,
NIO2 Review
28 Inner and Anonymous Classes  zip Jenkov tutorial on Inner Classes
29-31 Generics zip  Generics in different languages
32-34 Concurrency  zip Joel Armstrong – How we program multicores  Carl Hewitt on Actor Model, Joel Armstrong on Computing: The first 100 Years
35 Extreme Programming Overview zip Ch3: The End of the Master Builder, Checklist Manifesto, Atul Gawande
Checklist for Software Projects, courtesy MIT6.170 Software Studio, Spring 2013
XP in 21st Century – Rachael Davis
Economics of the Software Design – JB Rainsberger
36-37 Principles of Object-Oriented Development zip OOP is Dead! Long Live OODD Smalltalk design principles,
Solid Principles – Robert C. Martin, Sandi Metz
38 Persistence With CassandraDB  zip ObjectDB – PDF, tutorial NoSQL Distilled to an hour by Martin Fowler

Cassandra Data Modeling

39-40 MVC Architecture + Servlets pdf  Expecting Professionalism in S/W Dev

Microservices – Martin Fowler

Self-Study (Assessed)
1 Object Model Object Model chapter-OOAD  Alan Kay – OOP, Message Passing;
Traits intro,
wikipedia article on OOP
Traits paper, Smalltalk – History, Design Principles
Common Lisp Object SystemMeta Object Protocol
2 Packages and Classpath PDF
3 Cloning Objects PDF
4  Taxi Company case study zip
5 Designing Applications zip Read Modeling through CRC Cards and PPT of OOAD, BITS course Pair Programming a Facebook Messenger Bot – Mattias Petter Johansson
6 Design Patterns Pattern Index
Optional Topics (Not-assessed)
1  Building GUI zip  Java FX by Oracle
2 UML Diagrams – State and Activity Diagrams