COSC-052: Computer Science II
Spring 2013
“People who know neither programming nor mathematics take for
granted that programming is like mathematics. Yet, it turns out
that English majors are as likely to be as successful at programming
as mathematics graduates are. In practice, the worlds of mathematics
and programming are just about disjoint.”
—M.H. van Emden, Communications of the ACM, 32(12), p. 1498,
December 1989.
Class Time: |
TR 11:00 AM–12:15 PM |
Classroom: |
ICC 105
|
|
|
Instructor: |
Mark Maloof |
Office: |
325 St. Mary's Hall |
Mailbox: |
329A St. Mary's Hall |
Office Hours: |
None for 24–25 academic year.
(or by appointment) |
Everything you need to know about the TAs:
Name |
Netid |
Office Hours |
Dev Environment |
|
|
|
Jessica Natoli |
jan59 |
TR 4–6 PM |
OS X, Xcode |
Wells Robinson |
wir |
TR 2:30–4:30 PM |
OS X, Xcode |
Kristen Schwabe-Fry |
kms298 |
MW 10:30 AM–12:30 PM |
Unix, vi, g++ |
Andrew Stukey |
ats44 |
MW 2–4 PM |
Windows, Visual Studio |
TA's Office: 330 St. Mary's Hall
TA's Mailboxes: 329A St. Mary's Hall
Course Description
This course surveys advanced topics of C++ programming and introductory
concepts of data structures.
It 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:
program organization,
pointers,
self-referential classes,
dynamic object creation and destruction,
linked lists,
recursion,
inheritance,
abstract base classes,
virtual functions,
polymorphism,
template classes,
exception handling,
C-style arrays,
bit operations,
random file access,
big-Oh notation,
abstract data types,
stacks,
queues,
deques,
lists,
vectors,
sequences,
priority queues,
binary trees,
binary search trees,
elementary graphs,
searching, and
sorting.
Prerequisite: Computer Science I (COSC-051).
Recommended Texts:
-
C++ How to Program, Eighth Edition, by Deitel and Deitel
-
Starting out with C++, Early Objects, 7th edition, by Gaddis, Walters, and Maganda.
-
Data Structures and Algorithms in C++, by Goodrich, Tamassia,
and Mount.
Schedule
Week
|
Topic
|
Chapters
|
|
|
|
1 |
Program Organization, make, Doc Comments |
|
2 |
Classes, Object Composition, Exception Handling |
|
3 |
Classes, Object Composition |
|
4 |
Inheritance, Polymorphism |
|
5 |
Inheritance, Polymorphism |
|
6 |
Exception Handling, Implementing Exception Classes |
|
7 |
Algorithm Complexity, Asymptotic Notation |
|
8 |
Midterm, Self-Referential Classes |
|
9 |
Template Classes |
|
10 |
Singly Linked Lists |
|
11 |
Stacks, Queues |
|
12 |
Deques, Priority Queues |
|
13 |
Lists |
|
14 |
Recursion, Linear Search |
|
15 |
Arrays, Vectors, Binary Search, Sorting |
|
16 |
Trees, Binary Trees |
|
17 |
Binary Trees, Binary Search Trees |
|
|
|
|
Assignments and Grading
- Programming Projects (40%)
- Project 1 (assigned R 1/24, due F 2/8), 6 points
- Project 2 (assigned R 2/7, due M 2/25), 6 points
- Project 3 (assigned R 2/28, due W 3/27), 8 points
- Project 4 (assigned T 3/26, due T 4/16), 10 points
- Project 5 (assigned T 4/16, due M 4/29), 10 points
- Midterm Exam: R 2/28 (20%)
- Final Exam: R 5/9, 12:30–2:30 PM, REI 264 (30%)
- Miscellany (10%)
- Participation
- Quizzes
- Homework
Grading
string Grades::toLetterGrade()
{
if (grade >= 94)
return "A";
else if (grade >= 90)
return "A-";
else if (grade >= 87)
return "B+";
else if (grade >= 84)
return "B";
else if (grade >= 80)
return "B-";
else if (grade >= 77)
return "C+";
else if (grade >= 74)
return "C";
else if (grade >= 70)
return "C-";
else if (grade >= 67)
return "D+";
else if (grade >= 64)
return "D";
else
return "F";
} // Grades::toLetterGrade
Resources
- Project Grading Sheet
- C programming.com–Your Resource for C and C++ Programming
- cplusplus.com–The C++ Resources Network
- Google C++ Style Guide
- Safari Tech Books Online: A great place to find e-books
on learing Unix, vi, and emacs
- Tutorials from lynda.com
- Screencast: Program Organization
- Screencast: Basic Makefiles
- Screencast: Date Class Design and Implementation
- Screencast: Makefile Magic
- vi Reference Card
- emacs Reference Card
- gdb Reference Card
- How to Write Doc Comments for the Javadoc Tool
- doxygen: A documentation system for
C++, C, Java, and other languages
- Unix as IDE
- Eclipse, a free integrated development environment (IDE) for Linux, OS X, and Windows
- NetBeans, a free
IDE for Linux, OS X, and Windows
(Oh! And Solaris)
- Code::Blocks, a free
IDE for Linux, OS X, and Windows
- Visual Studio Express,
a free IDE for Windows
- vim, an improved vi editor for Unix, OS X,
and Windows. It's usually already installed on OS X and Unix systems
- Interactive Vim Tutorial
- Useful Unix Commands
- HOWTO: Log in and transfer files to cs-class from OS X and Linux
- HOWTO: Log in and transfer files to cs-class from Windows
- HOWTO: Create and compile files under Unix
- COSC-051 Frequently Asked Questions
- WinSSH: a secure
telnet and ftp client for Windows (educational license)
- PuTTY:
a free secure telnet and ftp client for Windows
-
E-ssentials: Student Guides to Technology at Georgetown University
-
Guide to Unix Computing (Adobe Acrobat file)
- Reiter's Bookstore, a great local
place to find technical books
Marginally Interesting Links
Copyright © 2019 Mark Maloof. All Rights Reserved.
This material may not be published, broadcast, rewritten,
or redistributed.