Lecture #1 - Introduction to OOD

Discuss Projects, Exams, Class Mechanics

Web Resources:

CppReference.com, CPlusPlus.com, C++ TechLinks
CppCon - 2014, Going Native 2013
Herb Sutter's Blog, Herb Sutter on C++11, Herb Sutter keynote - Going Native 2012
Scott Meyer's Blog, S.M. on thread suspension, S.M.: C++11 Sampler
Stroustrup's Home Page, Code Project, Boost Library

Content:

Course Goal:

To learn how to make our programs elegant and simple, make their intents clear, and make them quick and reliable.
This lecture is an introduction to the CSE687 course. Today we discuss topics to be covered in this course, its projects, examinations, and grading. We then introduce the notion of packages and discuss common notation to be used throughout the course.
  1. Readings for Lecture #1

    Text: order now if you haven't already.
    Get familiar with this website.
    C vs. C++
    C++ Survival Guide, doc
  2. Syllabus
    Describes topics to be covered, reading material for you to digest before coming to class, and due dates for the assigned projects.
  3. Today's Discussion:

    Content of the course:

    • Syllabus - Design concepts and Principles, C++ implementation, Sockets, Threads, Distributed Systems
    • Four Projects:
      Project #1, Project1HelpS17
      Build NoSQL database that stores key/value pairs and maintains parent/child relationships.
      Project #2
      Develop source code dependency analyzer using Parser from Repository folder.
      Project #3
      Build C++ code publisher that manages web views of source code with dependency relationship links.
      The publisher builds code pages, using dependency analyzer and NoSQL database to support creation of linked pages.
      Project #4
      Remote Code publisher using message-passing communication channel and client with GUI for content management.
      Code Grade Sheet, doc
    • Midterm:
      Here are Instructor's Solutions for last year's midterms.
    • Typical Lecture:
      Most often contains a discussion of a design idea, concept, or principle, a relevant slide presentation, and a walk through of code. My goal is to do these things in about equal measure, although it doesn't always work out to be that balanced. Occasionally we will spend most of the class period discussing one of the required projects. Pertinent questions are always welcome.

    How will your grade be determined:

    • The projects you submit count 2/3 of your grade:
      Projects are compiled, run, tested against the Project Statement requirements, and evaluated for:
      Structure (20 points)
      Style (15 points)
      Design(20 points)
      Functionality (45)
      We use this grade sheet.
      You will be expected to demonstrate, by your project output, that you meet all of the requirements
      from the Project Statement.
    • Your midterm performance counts 1/3 of your grade:
      You can find Instructor's Solutions to each of the four midterms from last year here.
      In the morning session we hand out Midterms #1 and #2, alternately, and
      in the afternoon session we hand out Midterms #3 and #4, alternately.
      The midterm exam is closed book, but you will be allowed to bring in one sheet of notes.

    Things you need:

    Available to you from this website:

    • Presentations and external resource links
    • Code Examples - linked from lecture pages
      The easiest way to retrieve sample code is to go to the code folder,
      right-click on the project's zip file and save-target.
    • Repository
      Contains reusable packages that you may use in your projects and elsewhere.
    • Lecture pages (this page is the first)
      Each lecture page is a container for discussion text and links to presentations, code, and external resources.
    • Resources in drop down menus at the top of all lecture pages:
      Lectures An index of links to named lecture pages
      Projects Getting started and other resources
      Notes Small discussions about design
      Study Guides Collections of links to presentations and code examples
      Directories Links to the class directories on the college server
      Blog Extended discussion about things of interest for OOD
      See Getting Started A summary of good things to look at as you start out

    Help and Advice from Instructor and Teaching Assistants (TAs):

    • Office Hours
    • Instructor's Help Session
      I hold weekly help session in CST 4-201 every Friday morning, starting at 9:00am.
      I won't lecture, but will answer almost any question.
      We often talk at the board with a running dialog about a variety of technical topics.
    • TA's Help Session
      Zilong will hold a help session starting at 5:00pm in CST 4-201.
      I've asked him to only answer basic questions, referring sophisticated questions to me.
      The intent is to support students who are struggling with the class material.
      I don't want well prepared students to dominate this Help session.

CST strip