Computer Science 1
Clay Shields, Department of Computer Science, Georgetown University
Assignments, Exams, and Readings
Assignment | Due Date | % Final Grade |
---|---|---|
Homework 1: Thinking about Algorithms | September 13, before class. | 3% |
Homework 2: Compiling and Submitting Programs | September 20th, before class | 4% |
Overview of Semester Projects | ||
Project 1 Design - RSV Study Subject Enrollment | September 27th | 3% |
Project 1 - RSV Study Subject Enrollment | October 4th | 5% |
Project 2 Design - RSV Cohort Analysis | October 11th | 3% |
Project 2 Code - RSV Cohort Analysis | October 18th | 6% |
Midterm Exam | October 25th, in class | 25% |
Project 3 - RSV Cross-Cohort Analysis | November 6th | 8% |
Project 4 - RSV Trial Side Effect Analysis |
November |
8% |
Project 5 - RSV Vaccine Effectiveness Analysis | December 6th | 10% |
Final Exam | December 13th, 12:30 - 2:30 (subject to change, check Registrar, location TBD) | 25% |
Instructor, TA, and Course Information
Instructor
Clay Shields
Office: 323 St Mary's Hall
Office Hours: Tuesday 1:00 - 3ish, likely later
Contact information here.Teaching Assistants
- See Blackboard calendar for TA office times
Course Information
Description:
This course is intended for computer science majors and minors, and other students with a serious interest in learning C++ programming. The course covers the following topics: basic data types, the C++ string class, variables and constants, and their declaration, input/output (cin/cout) operators, assignment operators, arithmetic operators, conditional control structures, repetition control structures, basic file operations, user-defined functions, value and reference parameters, scope rules, name precedence, function overloading, template functions, elementary software engineering principles, Standard Template Library (STL), the vector class, elementary searching and sorting, user-defined classes, operator overloading, pointers, self-referential classes, dynamic object creation and destruction, linked lists, and recursion. This course may be used to fulfill the math/computer science portion of the Gen Ed Math/Science requirement. COSC-051 followed by COSC-052 is a major introductory sequence and together complete the General Education requirement for math/science.
TA Information
The Google calendar for the TAs is available at: https://calendar.google.com/calendar/b/1/render?tab=mc&pli=1#main_7. TAs meet in the basement of St Marys Hall on the side towards the middle of the parking lot.Resources
- Textbook
The textbook for this class is Starting out with C++, Early Objects, 9th edition. . The textbook is not required but many people find it useful. - Tutorials
The official class system is a Unix system. There will be help sessions in the third week of class on how to use cs-class. We also have a number of tutorials available to help you with the system.- 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.
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!
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. I am in the
- Putting it all together: Professor Maloof created this tutorial which shows how to edit and compile a program on Unix.
- Software
- Remote Connection Software: Even if you use one
of the compilers listed below, you will have to make sure
your code works on cs-class.cs.georgetown.edu, since that is our reference
platform and gets backed up regularly. The software below
will allow you to log into cs-class.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 Cyberduck.
- 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.
- Code::Blocks This is a compiler and editor that should work on either Windows or Linux.
- Apple
XCode: For you lucky ones who have a Mac
with OS X. You can download it
for free from Apple through the App Store. To use it in the terminal
in OS X 10.9, you will need to run the command:
xcode-select --install
This is what I sometimes use for developing the projects. - If you are running linux, you can just use GCC as described in the tutorials for cs-class.cs.georgetown.edu. It should be installed natively with the OS.