Software design and development
Software project life cycles
Specifications and documentation
Planning, abstraction, modularity, and incremental design
12 steps to better software (Joel on software)
Intro to software eng (from Dr. Peter Walsh)
Data abstraction and
Procedural abstraction (from Dr. Peter Walsh)
Agile development (wikipedia) and
and limitations (B. Collet)
Version control and git
Version control and configuration management (oldish notes)
Revision control (wiki)
Git at viu ,
example with merge
gitk documentation:
from git-scm.com, and
from gitolite.com
Git at github
Git homepage (git-scm.com)
tutorial from Lars Vogella
Git magic (by Ben Lynn) (pdf)
(SphereDev.org)
Everyday Git (kernel.org)
Git for Computer Scientists (T. Virtanen)
git (wikipedia)
Shells, scripting, and bash
Bash,
linux,
and more linux
Bash Guide for Beginners (M. Garrels)
Bash Scripting Tutorial (LinuxConfig.org)
A quick guide to writing scripts using the bash shell (D. Rebbechi)
bash/perl scripts for git (kernel.org)
Automated builds, architecture, make, and C++
C++ for java programmers (cs@wisc) and another (hostmann.com)
my own scratchpad of notes on make
GNU make (GNU.org)
Automating the creation of makefiles (wikipedia)
Language libraries
Comp. architecture (fetch decode execute, run time stack, memory organization, etc. )
defensive programming (Dr. Walsh's notes)
additional concerns regarding forms and security
Debugging, and defect tracking/reporting
Norman Matloff's "Guide to Faster, Less Frustrating Debugging" (U Cal @ Davis)
GDB, valgrind, and gprof quickref
GDB cheat sheet (yolinux.com)
gdb Tutorial (unknownroad.com)
C++ Programming/debugging (wikibooks.org)
Painless bug tracking (JoelOnSoftware.com)
Bug tracking software (open source)
- Bugzilla (sandbox):
sample bug report,
search, and
guidelines (pdfs)
- Trac
- Redmine
Code standards and inspections
Coding standards, styles, and inspections (oldish notes)
code reviews, and sample standards, (both from possibility.com)
Intro and software inspections (from Dr. Peter Walsh)
Software testing
Testing levels and techniques (oldish notes)
software testing (wikipedia)
test driven development (possibility.com)
Testing types and purposes (testinggeek.com)
Unit and functional testing (ibm.com)
Test automation (wikipedia)
Test plan template
(atlascode.com)
Module testing and
Testing (from Dr. Peter Walsh)
Software performance and profiling
debugging and profiling with valgrind
GDB, valgrind, and gprof quickref
S. Wolf's guide to gprof (cs.duke.edu)
Profiling tools
and tuning (wikipedia)
Character sets and graphical interfaces
Character representations and unicode
Perl gtk2 tutorial (sourceforge.net)
C++ gtk 2 tutorial (gnome.org)
Additional material and resources
Emacs tutorials
Learning emacs (emacs wiki)
GNU guided tour of emacs
emacs tutorial by K. Waclena (U. of Chicago)
Vim tutorials
my short vim guide
interactive tutorial (openvim)
vim wiki tutorial
CS resources
Tech notes for students
my csci git/submit notes
Java on otter/cubs
Right now java on otter and in the labs is version 1.8 of OpenJDK,
docs available at openjdk.net
Perl and perl's test module
notes on creating/using your own modules in perl
my REALLY old perl notes
introductory notes on perl Test
Perl Programming
(TutorialsPoint.com)
When software projects go wrong ...
9 SW Disasters (slideshow)
20 famous SW Disasters (more detail, but includes some fictional events)
When Interfaces Kill (B. Tognazzini)
How to kill patients through bad design (J. Nielsen)
Bash exploit (sept.2014) injection attack
If you've heard a bit about the rather serious old bash exploit,
you might find some of this interesting reading:
Redhat security blog
Cert Vulnerability notice
Heartbleed OpenSSL vulnerability
High level overview from Symantec
The git commit that introduced the vulnerability