Object Oriented Design and Implementation
About this course
A course taught in the Dept. of Computer Science at UC Santa Barbara.
This site is maintained in this github repo: https://github.com/ucsb-cs32/ucsb-cs32.github.io. If you are a CS department faculty member or TA that should have access to this page, contact Phill Conrad to request permission.
- Catalog Description including pre-requisites
Previous iterations of this course
Textbooks
- Problem Solving with C++, 9th Edition—Required C++ textbook
- Data Structures and Other Objects Using C++, 4th Edition—Required C++ textbook
Topics
- antipatterns—Things to avoid in your code
- bash—Unix command line shell, and a programming language
- compilers—programs that translate C++ to machine code (g++, clang)
- C++—Various C++ Topics
- CSIL: disk quota and file quota issues—How to diagnose and fix
- CSIL: git configuration—Configuring your CSIL account to use git
- Data Structures: Hash Tables—Open and Closed Hashing, etc.
- Eclipse—One of several choices for a Java IDE
- emacs—general purpose text editor with programmer-friendly features
- emacs: customization—making changes that happen every time you run emacs
- git/github: overview—An introduction. git vs. github.com vs. github.ucsb.edu, repos, etc.
- git: basic workflow—The basics: git add..., git commit..., git push ...
- git: cloning your first repo—A guide for those new to git
- github.com: creating private repos under an organization—for closed source class assignments
- github: using ssh keys—generating public/private key pair, uploading public key to github
- IDEs for C++—Integrated Development Environments for C++ (CLion, Eclipse, Netbeans, etc.)
- libraries—C/C++ libraries for various purposes
- libraries: cairo—library for producing graphics in a device independent way, with C/C++ bindings
- libraries: curlpp—C++ library for fetching web pages
- libraries: jsoncpp—C++ library for decoding JSON
- libraries: pango—library for a library for laying out and rendering of text, with an emphasis on internationalization
- Test Driven Development (TDD)—General information about best practices
- tools—Tools for software development
- tools: gdb—GNU debugger
- tools: valgrind—Tool for checking run time behavior of C/C++ programs, including memory leaks
- Unix: Misc tools—Various useful command line tools you may not know about
- vim—a widely used text editor among Unix users
- vim: customization—customizing vim for your purposes
- X11—Dealing with X11 DISPLAY issues
Resources
- C++: References—Online references for C++
- C++: Tutorials—Online resources for learning C++
- sample exams—Exams from previous offerings of CS32