Some of the topics I would like to discuss during CS 204 -- Test-driven design -- Use cases / user stories -- Style: good naming, layout, commenting -- Functional interface design -- Command-line interface design -- Names -- IDEs and debuggers -- Version control (git, hg, svn, etc.) -- Setting up a development environment -- Documentation: what people need; javadoc/doxygen/pydoc;... -- Unix commands: cd, ls, rm, rmdir, mkdir, cp, mv, grep, wc, diff, tr, head, tail,... -- Unix piping. (e.g. my scripts + grep + sowpods.txt) -- Encoding: UTF-8, UTF-16, Latin-1, etc. -- REST -- XML -- JSON -- Regular expressions -- Maintenance & how to prepare for it -- Assertions -- Error-handling: exceptions, return values, etc. -- Profilers -- Automation in general, Makefiles in particular -- Client/server structure -- Third-party libraries -- Multi-threaded code, thread safety -- Human interface guidelines -- UML -- SQL -- Development methodologies -- Design patterns: singleton, factories, MVC, observer, etc. -- GUI design -- GUI coding -- HTML -- CSS -- Javascript, jquery -- Ajax