Tool chain for C/C++
- git/github
 - Github Organization: https://github.com/ucsb-cmptgcs-1a-f17
    
- All enrolled students in CMPTGCS 1A for Fall 2017 have been enrolled in this organization
 - That gives you the ability to create repos “owned” by the organization, instead of you.
 - Creating repos under this organization, instead of your personal account has some benefits:
        
- Your instructor, and any helpers for the class (mentors, TAs, etc.) automatically have access
 - Doesn’t count as a private repo against your own account’s limit (if/when you lose your “student discount” of unlimited repos, no problem.)
 - Doesn’t clutter up your personal github space.
 
 
 - Hello World programs in C and C++
 - editors and IDEs
 - gcc, clang, g++ and clang++ compilers
 - make and Makefiles
 - various kinds of files: 
.c,.h,.cpp,.hpp,.o, executable - debugger: gdb
 
Creating your account on submit.cs
- Go to https://submit.cs.ucsb.edu
 - Click “Create Account”.
 - Use your @umail.ucsb.edu account to create your account.
 - Then, login at https://submit.cs.ucsb.edu
 - Click “Join Class”, and find the button “Join CMPTGCS_1a_f17”. Click it.
 
Logging into CSIL from a terminal prompt (for simple command line stuff without graphics)
These instructions work at the following terminal prompts:
- Mac OS
    
- Terminal
 
 - Linux (also any other reasonable Unix-based system)
    
- Any terminal/shell
 
 - Windows
    
- the “git bash shell” provided by git for Windows
 - shells provided by Cygwin
 - The Microsoft provided bash for Windows (on Windows 10, and we assume, subsequent versions of Windows)
 
 
Assuming your CSIL username is cgaucho, use:
ssh cgaucho@csil-07.cs.ucsb.edu
BUT: csil-07 should not be taken literally.  Use any of csil-01, csil-02, csil-03, etc. through csil-48.
Other ways to connect (simple command line without graphics)
- PuTTY on Windows. Hostname is csil-01.cs.ucsb.edu (or any of 01 through 48).
 
Connecting with X11 Graphics
- On MacOS:
    
- You need an extra download, XQuartz
 - Then, just use “ssh -Y …” instead of “ssh”
 
 - On Unix/Linux:
    
- Just using “ssh -Y … “ instead of “ssh” should work.
 
 - On Windows:
    
- Easiest known free solution: MobaXTerm (usually just “works”)
 - Another known free solution: PuTTY + XMing (requires a bit of configuration)
 - X11 server built into Cygwin
 
 
Useful Unix Commands
- Make a whole directory path at once:
    
mkdir -p foo/bar/fum/fiddle - Remote secure copy (via “scp”, a cousin of “ssh”, the “secure shell”) a file from CSIL to current directory
on your local machine
    
scp yourusername@csil-01.cs.ucsb.edu:/some/directory/on/csil/some_file.cpp . - 
    
Scp files with a wildcard, e.g.
*.cpp. Note that you have to “escape” the wildcard, so that it gets interpreted on the remote system instead of at the local shell.scp yourusername@csil-01.cs.ucsb.edu:/some/directory/on/csil/\*.cpp . - 
    
Scp entire directory. Note that you have to “escape” the wildcard, so that it gets interpreted on the remote system instead of at the local shell.
scp -r yourusername@csil-01.cs.ucsb.edu:/some/directory/on/csil . 
Test-Driven Development in C++
Google Test and Google Mock are frameworks that support test-driven development in C++.
https://github.com/UCSB-CMPTGCS-1A-F16/gtest-demo