CSCI 1200 Data Structures
Spring 2018

  Contact Information
   Forums (Piazza)

  Learning Outcomes
  iClickers in Lecture
  Course Grades

  Lecture notes
  Lab materials
  Test reviews

Weekly Schedule
  Office Hours
  Lab Times

Getting Help
  Advice from TAs
  Advice from Students

  Due Date and Time
  Late Day Policy
  HW Grading Criteria

Collaboration Policy &
Academic Integrity

C++ Development
  Code Editors & IDEs
  OS Choices
  Install WSL
  Install Cygwin
  Memory Debugging
    Dr. Memory
  Test Your Installation

  Optional Textbooks
  Web Resources
  Misc. C++ Programming
    Command Line Args
    File I/O
    string → int/float

C++ Development


You may do your programming work for this course with any C++ compiler and development environment you wish, but your submitted homework code must compile and run on gcc/g++ 4.8.X. We understand that some of you may choose to use another compiler and development environment (e.g., Microsoft Visual Studio) for most of your work. We are asking you to write portable code (for g++/gcc) because it is good programming practice and it allows us to significantly streamline the grading process for your TAs. This leaves more time for us to give constructive feedback on programming style, individual tutoring, and debugging help.

The good news is that the gcc/g++ compiler is available for every operating system, and you have a variety of different options for development environments. Note: Slightly different gcc compiler version numbers are ok. You will probably not notice any differences. (Be sure to do a practice submit of your homework early enough each week to allow time to correct compilation issues.)

We also recommend the clang/LLVM compiler, which has earned much praise for having clear and concise compiler error messages that are especially helpful for new C++ programmers. Once setup on your system, you simply substitute "clang++" for "g++" when you compile your program. However, because clang is still under heavy development, it is somewhat less stable and portable to all operating systems and hardware. Thus we will still primarily use g++ for grading on the homework server.

Note on C++11: Many cool new C++ language syntax features were introduced with C++11. Not all operating systems/compilers support these new features (it is ok if your development environment does not support C++11). We will avoid making use of these new features in code examples for the course. Similarly, we ask that students limit the use of these features on their homework and tests to avoid portability issues or other confusion during grading. For example, to demonstrate knowledge and mastery of types, students should explicitly write the type and not use the auto keyword when declaring variables.

We have organized a lot of information on the
C++ Development Environment choices for your specific Operating System.


Plaintext & Code Viewers/Editors

Many different text/code editors are available for all of the different operating systems. You'll want to pick an helpful editor that color-highlights your code and helps with indentation. Also note that use and display of "newlines" in plaintext files is not standardized on UNIX/linux platforms vs. Windows. There are several characters that are used to represent end-of-line/carriage return. We will always use '\n' (newline) in this course. This is the UNIX/linux way. Please do not use '\m' or '\r' in this course, it won't match the output we are expecting on the homework submission server. In order to examine the provided code & sample output & your own output, you'll want to make sure you find a text viewer/editor that correctly displays newlines ('\n').

Some recommended code/text editor options:

Also, ask your graduate TAs & undergraduate programming mentors what editor and/or integrated development environment (see below) they choose and why it's their favorite.


C++ IDEs (Integrated Development Environments)

Here are a few C++ development environments (similar to Visual Studio) that can be used with the GNU g++ or LLVM clang++ compilers: