CS32-Summer 2013 — Object-Oriented Design — TA Notes
This page is dedicated to CS32 course
(course's web-site,
forum)
taught at the UCSB
during Summer, 2013. CS32 is mainly about programming in C and C++. Besides
the languages themselves, you will learn how to use them to implement some
fundamental algorithms. You may also expect to gain experience in handling
a Unix-like operating system.
Besides administrativia, this page contains programming assignments,
slides and/or notes and links to external course-related resources.
If you have a question not answered here, please email me or, better, come
to my office hours.
Notes/Slides:
-
Discussion (Aug 8) — Scripting in Unix-like OS:
slides,
code
-
Lecture (Aug 12) — Intro to OOP in C++:
slides,
code
-
Discussion (Aug 21) — OOP in C++ / Advanced Topics:
slides
-
Discussion (Aug 29) — OOP in C++ / Inheritance:
slides,
code
-
Discussion (Sept 4) — OOP in C++ / RTTI, Advanced Inheritance:
slides,
code
-
Discussion (Sept 12) — OOP in C++ / Templates, STL, beyond CS32:
slides,
code
Usefull Resources:
C++
|
-
cplusplus.com
-
— a compilation of notes on C++ language.
-
googlecode, CppTest
-
— two frameworks for
unit-testing of C++ code.
|
|
Dev
|
-
make
(manual)
-
— the GNU implementation of make build
automation tool.
-
GCC
(manual)
-
— the GNU Compiler Collection. In particular, it
includes compilers for C and C++.
-
gdb
-
— a GNU debugger. A couple of good videos
on how to use it can be found among these
video tutorials.
-
valgrind
-
— a dynamic code analysis tool. Checks your code
for memory leaks. In addition, has a bound checker
and
plenty of other tools for memory analysis.
-
gprof
-
— a GNU profiler.
-
StackOverflow
-
— a Q&A web-site dedicated primarily to
software development. A good place to ask questions
and learn.
|
|
OS
|
-
Revolution OS
-
— just for fun; a documentary about the Free Software Foundation,
GNU, and Linux. (Also available on Netflix.)
-
Comparison of Linux Distributions
-
— an article on Wikipedia comparing existing
distributions of
GNU/Linux.
You may want to use one for this course, such as
Ubuntu, but it may also be Mac OS X,
BSD, or something else
from
this diagram. If you know how to handle one Unix-like OS, you
will be able to work with most of the others.
-
Practical Unix
-
— a series of video tutorials on using a Unix-like
operating system by Sam King and Emin
Topalovic. It is good to at least skim through the sections
Intro and Permissions.
-
Vim,
Emacs
-
— reference cards for two popular text editors.
-
Remotely working with CSIL via SSH from Windows
-
— a tutorial on how to use SSH and X11 in Windows.
-
Linux command reference
-
— a directory of Linux commands from O'Reilly's "Linux in a Nutshell".
|