| Suggested textbooks: these aren't required for the course, but if you're looking for some classics plus some more recent reads in the field they're certainly valuable.
In no particular order: - Clean Code (Martin) - Code Complete (McConnell) - The Pragmatic Programmer (Hunt, Thomas) - The DevOps Handbook (Kim, Humble, Debois, Willis) - The C Programming Language (Kernighan, Ritchie: aka K&R) - The Mythical Man-Month (Brooks) |
| Week | Topics | Resource links | ||||||||||||||||||
| Review/prep (not covered in class) |
intro to linux accounts, ssh, very basic linux | youtube, slides | ||||||||||||||||||
| basic programming tips for ssh/C++ on our systems | youtube, slides | |||||||||||||||||||
| git submit basics and troubleshooting | youtube, slides, short guide to csci git project/lab submission | |||||||||||||||||||
| Sept 1-5 | Notes: there is no lecture Sept 1st (VIU closed), and Friday's week 1 lab is a meet-and-greet to set up project teams, attendance required | |||||||||||||||||||
| Course mechanics, administrivia | outline labs. assignments, quizzes, project | |||||||||||||||||||
| Design and implementation challenges at larger scales | youtube, slides | |||||||||||||||||||
| Sept 8-12 | Intro to SDLCs, waterfall model | youtube, slides | ||||||||||||||||||
| spiral, agile, scrum, and hybrid models | youtube, slides (still need to expand for scrum/hybrid) | |||||||||||||||||||
| Roles/responsibilities in team s.w. development | ||||||||||||||||||||
| Sept 15-19 | Team plan presentations for phase 1 done in Monday lecture | |||||||||||||||||||
| Requirements and specifications | youtube, slides | |||||||||||||||||||
| Version control | youtube, slides | |||||||||||||||||||
| Sept 22-26 | git basics | youtube, slides | ||||||||||||||||||
| git branch, merge | youtube, slides | |||||||||||||||||||
| git remotes, pull and push | youtube, slides | |||||||||||||||||||
| managing standard git with a team | Examples: using gitlab/github, or using csci assigned team git repos | |||||||||||||||||||
| Code/document standards | youtube, slides, Google's C++ style guide | |||||||||||||||||||
| Sept 29-Oct 3 | Using AI in CSCI courses | slides | ||||||||||||||||||
| Dave sick for the Oct 1 lecture | ||||||||||||||||||||
| Oct 6-10 | Dave sick for the Oct 6 lecture | |||||||||||||||||||
| informal team phase 2 plan presentations Oct 8 | ||||||||||||||||||||
| HCI | youtube, slides | |||||||||||||||||||
| Localization, internationalization, unicode | youtube, slides | |||||||||||||||||||
| Oct 13-17 | Note: no classes Monday (VIU closed for Thanksgiving) but the regular Monday class schedule will be observed on Tuesday | |||||||||||||||||||
| Design concepts and issues | youtube, slides | |||||||||||||||||||
| Modeling: DFDs, ERDs, activity/state/sequence diagrams | notes/examples (borrowed from old old old offering of 375 system analysis):
- process modeling: DFDs, - data modeling: ERDs, - larger DFD/ERD example | |||||||||||||||||||
| Code reuse | youtube, slides | |||||||||||||||||||
| Oct 20-24 | Intro to software testing | youtube, slides | ||||||||||||||||||
| unit testing, stubs and drivers | youtube, slides | |||||||||||||||||||
| test suite development | youtube, slides | |||||||||||||||||||
| test automation | youtube, slides | |||||||||||||||||||
| Oct 27-31 | Shells, scripting languages and bash | youtube, slides | ||||||||||||||||||
| - basic bash i/o, syntax | youtube, slides | |||||||||||||||||||
| - integer and floating point math | youtube, slides | |||||||||||||||||||
| - if statements and boolean logic | youtube, slides | |||||||||||||||||||
| - references, quotes, and brackets | youtube, slides | |||||||||||||||||||
| - loops and iteration, text processing (reading file, command content) | youtube, slides | |||||||||||||||||||
| - arrays | youtube, slides | |||||||||||||||||||
| - command line arguments | youtube, slides | |||||||||||||||||||
| - bash functions, calls and returns | youtube, slides | |||||||||||||||||||
| - globbing and wildcards in commands | youtube, slides | |||||||||||||||||||
| - regular expressions and pattern matching | youtube, slides | |||||||||||||||||||
| Nov 3-7 | Bash scripting examples | youtube, misc. functions, scripting/git exercise | ||||||||||||||||||
| Recursive directory traversals | youtube, slides | |||||||||||||||||||
| Automated testing with bash and C++: version 1 | youtube, slides, SampleTester.sh | |||||||||||||||||||
| Script for parsing command line arguments | youtube, slides, cmdLineParse.sh | |||||||||||||||||||
| Script (outline) for running a single test case (specified by cmd line args) | youtube, TesterII.sh | |||||||||||||||||||
| Script for running a test suite (using TesterII.sh above) | youtube, TestCollection.sh | |||||||||||||||||||
| Nov 10-14 | Study week, no labs or lectures | |||||||||||||||||||
| Nov 17-21 | Bug reports, reporting, tracking | youtube, slides | ||||||||||||||||||
| Time estimates and tracking | youtube,
slides
intermediate cocomo (wikipedia) | |||||||||||||||||||
| Code and document inspections | youtube, slides | |||||||||||||||||||
| Nov 24-28 | Product deployment | youtube, slides | ||||||||||||||||||
| Maintenance and support | youtube, slides | |||||||||||||||||||
| Refactoring | youtube, slides | |||||||||||||||||||
| Test driven development | youtube, slides | |||||||||||||||||||
| Profilers and profiling | youtube, slides | |||||||||||||||||||
| gprof | youtube, slides | |||||||||||||||||||
| valgrind for profiling | youtube, slides | |||||||||||||||||||
| valgrind for debugging | youtube, slides | |||||||||||||||||||
| Dec 1-5 | Service-oriented design models | youtube, slides | ||||||||||||||||||
| Design patterns | youtube, slides | |||||||||||||||||||
| Course wrap-up, exam overview (material, question styles, format) | ||||||||||||||||||||
| Dec 8-18 |
There are 10 possible time slots to choose from, up to 3 are available in the Wednesday lecture,
4 in the 10am Friday lab, 3 in the 11am Friday lab.
First come, first served, email me (David.Wessels at viu.ca) your preferences (maybe provide first and second choices, just in case).
| |||||||||||||||||||
| Final exam: in the gym, Wed Dec 10, 1-4pm | ||||||||||||||||||||
| Extra content (time permitting) |
Hardware, software, and languages (background) | youtube, slides | ||||||||||||||||||
| Article: Coding habits and their impact on code reviews and maintenance (by M. Lynch) | ||||||||||||||||||||
| linux absolute and relative paths | youtube, slides | |||||||||||||||||||
| linux command history and options | youtube, slides | |||||||||||||||||||
| io redirection | youtube, slides | |||||||||||||||||||
| linux file permissions | youtube, slides | |||||||||||||||||||
| common environment variables and customizing your bash setup | youtube, slides | |||||||||||||||||||
| linux process control | youtube, slides | |||||||||||||||||||
| misc. useful commands/tools | youtube, slides | |||||||||||||||||||
| Compilation and compilers | youtube, slides | |||||||||||||||||||
| Compiling C/C++ with gcc/g++ (options, #includes, guards) | youtube, slides | |||||||||||||||||||
| Automated compilation, makefiles and make | youtube, slides, old makefile notes | |||||||||||||||||||
| Debuggers and debugging | youtube, slides | |||||||||||||||||||
| gdb and C | youtube, slides | |||||||||||||||||||
| language-specific debugging | youtube, slides | |||||||||||||||||||
| General safety principles | youtube, slides | |||||||||||||||||||
| templated functions and classes | youtube, slides | |||||||||||||||||||
| C++ stl: stack, list, queue, and iterators | youtube, slides | |||||||||||||||||||
| stacks example | youtube | |||||||||||||||||||