Synopsis:
Introduces this on-line CSE687 course, topics to be covered,
its projects, examinations, and grading.
We then discuss resources available for you and walk through this part of the website.
Tools needed for this course:
-
Class texts:
The C++ Programming Lanaguage (CPPPL), Fourth Edition, Bjarne Stroustrup
You will need at least the Fourth Edition, and should prefer later editions when they become available.
The C++ Standard Library (CPPSL), Second Edition, Nicolai Josuttis .
You will need at least the Second Edition. -
This website:
www.syr.edu/faculty/fawcett, Intro to Website, pptx
You may also use Google search with the phrase "Jim Fawcett"
Once you've reached the home page, select Courses > CSE687-OnLine. -
A laptop or desktop running Windows 10 or 7.
If you are a Mac or Linux user you will need to install a virtual machine, like Parallels or VirtualBox, and install Windows 10 in that.
-
Microsoft's Visual Studio Development Environment.
You can download, at no cost, here: Visual Studio.
-
The tools gliffy and workflowy are helpful for thinking about software - I will occasionally use them when discussing design ideas.
You may use them as well - open Google Chrome browser, go to
the Chrome Web Store,
and download (free).
Readings and Activities for the Week:
-
Texts:
CPPPL Chapters 1 - 5. Read these tour chapters quickly. Material will be covered in detail in later chapters
CPPSL Chapters 1 and 2 - skim, Chapter 3 - read quickly - Get familiar with website: Syllabus, lectures, notes, projects.
-
Look quickly at your first project assignment - to develop a single user Test Harness:
Projects > Project #1
-
Look quickly at each of the following projects to see where we are going with project work in this course.
Glossary of Terms
-
Object Oriented Design:
The design of software using classes and their four relationships: Inheritance, composition, aggregation, and using. -
Class:
Definition of data and methods that operate on that data, within a named structure, and with defined constraints on access by code not part of the class. Each class can be used to create multiple instances of objects containing class data members and operated on by methods of the class. -
Native Code:
Code that compiles to a form executed directly within an operating system process, with no intervening virtual machine, and no management of lifetime other than that provided by the code and the process in which it runs. -
Package:
A C++ package has two files with the same name: header file with an extension .h, and implementation file with an extension .cpp. Classes and global functions are declared in the header and defined in the implementation file. We normally expect a package to be focused on managing a single activity.
Lecture Content:
-
Course mechanics:
- The Syllabus describes topics to be covered, reading material for you to digest as part of each lecture, and due dates for assigned projects.
- Projects & Exams, Grading, References, on-line help
- Course Summary: Top Menu > Notes > Course Summary
- Getting started: Top Menu > Projects > Getting Started with C++
- Were we're going: Top Menu > Notes > C++ Knowledge base
-
Recommended External Resources for this course:
- Other notes:
- Blog
- Prior Midterm (Spring 2017) - Instructor's solution
- Structure of handouts directories,
- Piazza signup, Using Piazza
-
Projects:
Sample Project Statements:
What projects are required? The specific projects you will work on this quarter will be discussed in the first synchronous session, Wk #1b. Today we will look at sample projects that are similar in scope to the projects you will be assigned.-
Sample Project #1,
Code folder
Lexical Scanner - Tokenizer and SemiExpression -
Sample Project #2,
Code folder
Rule-based parser with pluggable actions -
Sample Project #3,
Code folder
Parser, augmented with Abstract Syntax Tree -
Sample Project #4,
Code folder
Source Code Analyzer
Here's a collection of diagram samples: Diagram Samples All code for these assignments will be developed using C++ and the C++ Standard Libraries with the latest version of Visual Studio. How will your submissions be evaluated? Code grade sheet Grading Policy So how do you start? Here are some practical steps to get going: Getting Started with your first project. -
Sample Project #1,
Code folder
-
Website Resources:
Resource Content Syllabus Lecture topics, text readings, links to projects, due dates Lecture Pages topic introduction, topic discussion, links to project statements, presentations, code Top Menu > Projects project statements, and resources to help you get started with projects Top Menu > Notes: notes about the C++ language and design techniques Top Menu > Notes > Course Summary Summary of the most important topics with selected details Top Menu > CodeSnaps important source code files, formated as wepages for quick access Top Menu > Study Guides summary pages for class relationships, OO design, templates, and review of OOD Top Menu > Blog pages for interesting technical ideas: design, software structure, parsing, ... Top Menu > Directories > Repository folders of code you may use in your projects Top Menu > Directories > Code folders for demonstration code used in the videos and synchronous sessions -
Motivation - What is a program?
- What is a Program?, Package Structure Matters!, Software Size Matters!
-
Example: BlockingQueue Package
Packages are the building blocks for a complex architecture. -
Incremental Development
A rational way of building large, complex software systems. -
Design Principles
Principles that guide Object Oriented Design.
-
C++ Programming Language
History, Assessment, Models, Comparisons, Technical Features -
Activities for the Synchronous Session:
- Create a list of tasks that code for Project #1 must execute in order to meet all its requirements.
- Pick one of the tasks and create a package that implements some, perhaps small, part of that functionality. For this, use Visual Studio.
-
Lecture Take-away: