Fall 2006

Clay Shields


front | classes | research | personal | contact

COSC 071

Tuesday/Thursday
1:15 - 2:30
Reiss Science 262

Assignments, Projects, and Exams

Instructor and TA Information

  • Help availability by time
      Monday: 4-5:30 PM St Marys 302 Christina
      Monday: 7-9 PM St Marys 302 Jessie
      Tuesday: 4-6 PM St Marys 302 Ibrahim
      Tuesday: 5-7 PM St Marys 302 Dave
      Wednesday: 2:30-4:30 PM St Marys 305 Clay
      Wednesday: 4-5:30 PM St Marys 302 Christina and Jessie
      Saturday: 3-5 PM St Marys 302 Ibrahim
      Sunday: 3-5 PM St Marys 302 Dave

  • Instructor: Clay Shields
    Office Hours: Wednesday, 2:30-4:30
    Contact: Information here

  • Teaching Assistants
    TBD

Policies

All my courses are run under the same set of policies which are available here. Students are expected to read and understand these policies. You can also read the Honor Council site.

Resources

  • Accounts: You will be given an account on a server named seva.cs.georgetown.edu. This will be the official machine to use for your assignments

  • Textbook: Alternate Version of Starting out with C++, 4th Edition. By Tony Gaddis, Judy Walters, and Godfrey Muganda

  • Tutorials: In order to complete the programming assignments, you will need to edit and compile on seva.cs.georgetown.edu, which runs the UNIX operating system. You might also choose to do some work on your own PC and then transfer it to seva.cs.georgetown.edu to complete it. These tutorials are designed to help you do so.

    • Unix information: For most of you, working on Unix will be odd. There is no graphical interface; you will need to type commands to make things happen. Here are some references to help you find useful commands.

    • Editing on Unix: You can use a variety of different programs to edit your code. The easiest to learn is called nano, and I recommend you start with that. There are other Unix editors that you can choose to learn as well. The most common is vi, which is installed on many Unix systems. Many people swear by its simplicity, others curse its primordial interface. If you plan on doing lots of CS work, I think you should learn emacs. While vi is more widely available than emacs and is smaller and faster to load, but emacs is far more customizable and powerful, can load specific modes that help you with the type of file you are editing, and can include other useful functionalities like web browsing and email. Emacs is probably harder to learn because it does so much more, but once you have mastered it, it is a power tool. It can even emulate vi!

    • Putting it all together: Professor Maloof created this tutorial which shows how to edit and compile a program on Unix.


  • Software: If you have your own computer, you may wish to work on that. The following programs might be of use to you.
    • Remote Connection Software: Even if you use one of the compilers listed below, you will have to make sure your code works on seva.cs.georgetown.edu, since that is our reference platform and gets backed up regularly. The software below will allow you to log into seva.cs.georgetown.edu and transfer files back and forth.
      • SSH terminal and file transfer client for Windows. You can use this to both long in and transfer files over an encrypted connection. I recommend this highly and use it regularly myself.
      • For Mac, you can open the Terminal program under /Applications/Utlities, and use ssh from the command line there. For file transfer, you might want to use Fugu.
      • For linux, open up that terminal window and use ssh and scp
    • Compilers: These programs allow you to edit and compile programs on your computer.
      • Dev-C++: a freeware, open-source compiler and IDE. I recommend this one for Windows. You should just use this, though other options are below
      • Visual C++ Toolkit: this is the free command line version of Microsoft Visual C++. It does not include the IDE editing environment, which makes it more cumbersome to use.
      • Visual C++ .NET: This is the full version of Visual C++ including the IDE. It might come with your book, otherwise it is about $100 new, though the Georgetown Personal Purchase, but won't do much more for you in this class than Dev-C++ will for free. It also accepts code that seva.cs.georgetown.edu won't like, making it harder to use.
      • Apple XCode: For you lucky ones who have a Mac with OS X. The software is normally included in the XCode CD that comes with your machine, or you can download it for free from Apple after a free registration. This is what I use for developing the projects myself.
      • If you are running linux, you can just use GCC as described in the tutorials for seva.cs.georgetown.edu. It should be installed natively with the OS.

Description and Grading

  • Description:
    Although intended for computer science majors and minors, other students with a serious interest in learning C++ programming may take this class. Topics include: basic data types; the C++ string class; variables, constants, and their declarations; input/output (cin/cout), assignment, and arithmetic operators; conditional and repetition control structures; basic file operations; programmer-defined functions; value and reference parameters; scoping rules; name precedence; function and operator overloading; template functions; elementary software engineering principles; the Standard Template Library (STL); the vector class; elementary searching and sorting; abstract data types; programmer-defined classes; pointers; self-referential classes; dynamic object creation and destruction; stacks and linked lists; recursion; abstract base classes; virtual functions; polymorphism; template classes; and exception handling. This course will satisfy the college science requirement, and how. Prerequisite: none.

  • Grading:
    • Homeworks, quizzes, design documents, and participation: 13%
    • Projects: 42%
    • Midterm exam: 20%
    • Final exam: 25%