COSC-052: Computer Science II

Spring 2017



  • 5/1/17: Review for final is W 5/3 @ 1pm in REI 284.
  • 4/27/17: Posted room for final exam: REI 281.
  • 4/12/17: Posted p5.
  • 3/24/17: Posted p4.
  • 2/24/17: Posted p3.
  • 2/8/17: Posted optional homeworks hw2 and hw3.
  • 1/11/17: Posted p2.
  • 1/25/17: Added information about the operating systems and development tools that the TAs use.
  • 1/20/17: Updated p1 to indicate that you have seven chances to compile against the autograder.
  • 1/11/17: Posted hw1 and p1.
  • 12/15/16: Set assignment dates.
  • 10/4/16: Created this Web page.
  • Where, When, Who

    Class Time: MW 2:00–3:15 PM
    Classroom: Reiss 112
    Instructor: Mark Maloof
    Office: 325 St. Mary's Hall
    Mailbox: 329A St. Mary's Hall
    Office Hours: In-person (325 STM): TR 11:00 AM–12:00 PM; online: M 10:30–11:30 AM and W 3:00–4:00 PM; or by appointment. Send me an email to get the Zoom link for online office hours.


    COSC-052 surveys advanced topics of C++ programming and introductory concepts of data structures. It is intended for computer science majors, minors, and other students with a serious interest in learning C++ programming. The course covers program organization, pointers, self-referential classes, dynamic object creation and destruction, linked lists, recursion, inheritance, abstract base classes, virtual methods, polymorphism, template classes, exception handling, C-style arrays, bit operations, random file access, basic algorithm analysis, big-Oh notation, abstract data types, stacks, queues, deques, lists, vectors, sequences, priority queues, searching, and sorting. COSC-051 followed by COSC-052 is a major introductory sequence and together complete the General Education requirement for Math/Science. This course can also be used to fulfill the math/computer science portion of the General Education Math/Science requirement.

    Prerequisite: Computer Science I (COSC-051).

    Recommended Texts:

    Learning Goals

    By the end of the semester, students will be able to:


    My course policies are designed to supplement the University's Undergraduate Honor System and the CS Department's Honor Policy. Unless stated otherwise when I distribute an assignment, the following is the default for all assignments for this course. I've developed my policies from past teaching experiences and from the CS Department's Honor Code at George Mason University.

    I am obligated to refer all suspected cases of academic dishonesty by undergraduate students to Georgetown's Honor Council. If you have any questions about these policies or how they apply, please discuss such concerns with me during class, during office hours, or by e-mail.

    In my experience, students at Georgetown do honest work. The small percentage of students who have submitted someone else's work as their own did so because they did not manage their time wisely.

    Students must follow proper scholarly practice for all submitted work, whether graded or ungraded and whether a draft or final version of a proposal, paper, or program. We must acknowledge our reliance on the work of others through citation.

    Students may be quite adept at and knowledgeable about citing and quoting material from traditional sources, such as books and articles. Typically, we do not have cite facts, common math formulae, or expressions of our own ideas, observations, interpretations, and analyses, However, students new to computer science may not realize that formulae, theorems, proofs, algorithms, and programs can require the same treatment as any other form of expression.

    For convenience, you do not need to cite the course materials, conversations with me or information you obtain from class lectures and discussions. If you are unsure about what requires citation or what constitutes proper scholarly practice, please ask me during class, during office hours, or by e-mail.

    I design my courses and assignments so students have what they need to complete the assignments individually without consulting outside resources. I determine the size of and credit for assignments based on the assumption that the work for them is the result of individual effort using only the course resources and materials. Students who use outside resources to complete assignments may not be eligible for full credit. Students who do not acknowledge their use of outside resources to complete assignments may be in violation of my course policies and the university's policies on academic integrity.

    The following list details acceptable and unacceptable practices:

    Policies dealing with late projects, cell phones, attendance, and inclement weather.

    Everything You Need to Know about the TAs

    Office Hours

    Name NetID Operating System IDEs and command-line tools
    Jonathan Gibson jeg263 MacOS Xcode
    Guy Burstein gb654 MacOS, Windows, Linux Xcode, Visual Studio, Linux is my IDE, The Terminal app is my IDE, vi, FileZilla, sftp and scp
    Jordan Mallen jam497 MacOS Xcode
    Eamon Cagney esc61 MacOS, Windows Eclipse, Visual Studio, FileZilla
    William Stubbs wgs11 MacOS Xcode, FileZilla
    Roger Wang rw794 Windows Eclipse, Visual Studio, Code::Blocks, FileZilla
    Jonathan Guerin jgg41 Windows Visual Studio
    Eibhlin Goggins esg41 MacOS Xcode, FileZilla
    Dongpeng Xia dx21 MacOS Xcode, FileZilla
    Isabella Schwartz is392 MacOS Xcode, FileZilla
    Mary Joy Kozak mk1527 Windows Visual Studio
    Sarah Curtis sgc46 MacOS Xcode, Eclipse, FileZilla
    Jerzy Lasota jml352 MacOS Xcode, Code::Blocks, The Terminal app is my IDE, FileZilla, sftp and scp
    Parth Patel pbp25 Windows Visual Studio, FileZilla
    Ahmed Latif aml295 MacOS Xcode, vi, emacs
    Elly Meng sm3008 MacOS Xcode, The Terminal app is my IDE, make, FileZilla
    Aicha Nzie an585 MacOS Xcode, The Terminal app is my IDE


    1   Program Organization, make, Doc Comments
    2   Classes, Object Composition, Exception Handling
    3   Classes, Operator Overloading
    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
    16   Insertion Sort, Selection Sort

    Assignments and Grading

    String Grades::getLetterGrade()
      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";
        return "F";
    } // Grades::getLetterGrade

    Materials: Readings, Videos, and Links

    Other Interesting Links

    Copyright © 2019 Mark Maloof. All Rights Reserved. This material may not be published, broadcast, rewritten, or redistributed.