GRADUATE LABORATORY II
(a.k.a PROGRAMMING SEMINAR/OBJECT-ORIENTED PROGRAMMING IN C++)
Course Description
-
This project-based course is an introduction to object-oriented computer programming directed at solving scientific problems. The student will learn the concepts of object-oriented programming using the most recent C++ programming language standard. Popular project management and modern compilation/build systems will be presented and utilized through the use of an integrated development environment (IDE) like Qt Creator. Fundamentals of streamed input and output, data types, objects and classes, templates, lambda expressions, flow control, repetition, program decomposition and library development, iand software engineering/design conceptsi will be explored. In addition to the base language concepts, students will utilize popular open-source and public-domain libraries such as Boost, Eigen, and OpenCV. (Prerequisites: None) Class 2, Credit 1 (Outline)
Meeting Times
-
Monday / 2:00-3:50pm (Eastern Time)
In-Person / CAR-2155
EXCEPTIONS
-
We WILL NOT meet on
-
Monday, 3/11/2023 (Spring Break)
It is expected that you will participate during this class in-person as described by the RIT Attendance Policy (RIT Governance Policy D4.0, Section I.B). In the event that you become ill, or can't attend this class in-person for another reason, I will be using Zoom to make this class available both synchronously and as a recorded lecture. While it is my intention to record each lecture, I can't guarentee that the recording technology will work every time or that the lectures will remain archived in cloud storage for extended periods of time.
The Zoom information to connect to the synchronous lecture is
-
Meeting URL: https://rit.zoom.us/j/95314637108?pwd=Tm1wZ3E3czU1ak5LVkhQeWlvclVrZz09
Meeting ID: 953 1463 7108
Passcode: 485007
Office Hours
Policies
Slack
-
RIT IMGS-610 Slack Workspace*
* If this link does not bring you directly to the Slack workspace, search for "RIT IMGS-610" and make a request to join
Course Materials
-
Deitel, Paul J., and Harvey M. Deitel. C++ / How to Program (10th Edition). Pearson Education, 2016.
Deitel, Paul J., and Harvey M. Deitel. C++20 for Programmers. Pearson Education, 2021.
Notes
Tutorials
-
Setting up your CIS environment for C++
IMGS cmake build environment (GitHub)
Moving your code to the build environment
MobaXterm - An X11 server/client for Windows
XQuartz - An X11 server/client for macOS
vi Editor
-
Advanced vi Tutorial hosted by RIT Computer Science House (CSH)
Quick Reference for vi
Build Environment Options
-
While we will be doing all of our developmment in a GNU/Linux environment, there are many options that you may choose from in order to carry your work out. You may
- Use the CIS-provided Linux machines with the ready-to-go environment that you set up above
- Use your Mac with a locally-configured Homebrew environment
- Use your Mac running a Fedora Docker Container
- Use your PC with Windows Subsystem for Linux 2 (WSL 2) enabled running an Ubuntu terminal
- Use your PC with Windows Subsystem for Linux 2 (WSL 2) enabled running a Fedora Docker Container
- Installing/configuring X11 server for host operating system
Course Mechanics
-
100% Project Code Reviews
Projects
-
Quadratic Formula Class (Due: 2/1)
- IMPORTANT NOTES
- All assignments must be submitted by 11:59PM (Eastern) and code reviews conducted on the dates listed
- Assignments submitted after the due date will not be accepted
Project Submission
Favorite Quotes
"The first 90 percent of the code accounts for the first 90 percent of the development time. The remaining 10 percent of the code accounts for the other 90 percent of the development time." - Tom Cargill
"A hacker to me is someone creative who does wonderful things" - Tim Berners-Lee
"To achieve great things, two things are needed: a plan and not quite enough time" - Leonard Bernstein
"Confusion and clutter are the failure of design, not the attributes of information" - Edward Tufte
"I never am really satisfied that I understand anything; because, understand it well as I may, my comprehension can only be an infinitesimal fraction of all I want to understand" - Ada Lovelace
"Simplicity is the ultimate sophistication" - Leonardo da Vinci
"Perfect is the enemy of good" - Voltaire
"The only way to do great work is to love what you do. If you haven't found it yet, keep looking. Don't settle" - Steve Jobs
"The most exciting phrase to hear in science, the one that heralds new discoveries, is not "Eureka!" but "That's funny..."" - Isaac Asimov
"It's only "work" if you'd rather be doing something else" - Dean Kamen
"A good scientist is a person with original ideas. A good engineer is a person who makes a design that works with as few original ideas as possible. There are no prima donnas in engineering" - Freeman Dyson
"It's easier to ask forgiveness than it is to get permission" - Grace Hopper
"I do not think there is any thrill that can go through the human heart like that felt by the inventor as he sees some creation of the brain unfolding to success" - Nikola Tesla