Topics
Software Engineering
- pair programming
- extreme programming
- agile programming
- SCRUM
- UML (Gliffy, yUML)
- refactoring
- unit testing (unittest, JUnit)
- acceptance testing
- source control (Git, GitHub)
- issue tracking (GitHub)
- wikis (GitHub)
- documentation (pydoc, Javadoc)
- technical reports
Database Design
- normalization
- create, drop, and insert
- select, project, and join
Web Development
- Google App Engine
- XML (BeautifulSoup, ElementTree)
- Google's data store
- Django templates
Programming in Python, Java, and Haskell
- assertions, exceptions
- built-in and user-defined types
- stack and heap
- garbage collection
- regular expressions
- classes
- static and non-static data and methods
- inheritance
- refinement and replacement overriding
- run-time polymorphism
- static and dynamic binding
- virtual function tables
- abstract methods, abstract classes, and interfaces
- multiple inheritance
- reflection
- built-in and user-defined containers
- iterators and iterator objects
- generators
- generic functions
- higher-order functions
- function objects, lambdas, and binders
Design Patterns
- singleton
- decorator
- factory method
- abstract factory
- builder
- prototype