Syllabus | CMSC 240 Software Systems Development - Spring 2024

Syllabus

Meeting Times and Staff

Instructor

Meeting Times

Class/Lab Info

Course Staff

Course Details

Welcome to Software Systems Development!

Your dedication and hard work have led you to this moment; you belong here. Congratulations on your achievements, and welcome to the course. I am thrilled to have you here and am looking forward to a semester filled with growth, learning, and success. Together, we will explore, create, and innovate. Let’s make this an outstanding semester for everyone!

Course Description

Introduction to techniques necessary for development of large-scale software systems. Topics include the development life cycle; design considerations including OOP, patterns, reuse, and usability; repository management; testing, debugging, and static/dynamic analysis; and group work. Also includes introduction to Unix/Linux environments, and to the C++ programming language, including classes, inheritance, and polymorphism; pointers and dynamic memory allocation; and the C++ Standard Template Library (STL).

Learning Outcomes

By the end of this course, you will:

Course Outline

Textbook and Resources

Textbook

There will be assigned reading from the following book which is available electronically for free via the UR library.

Resources

The following books are not required for this course. Instead it is a list of recommended resources for you to reference in addition to the course notes provided for you. These include:

All books listed here are available in electronic form for free on the O’Reilly Media website via the UR library. You can also find a ton more books and resources there.

Coursework and Grading

Course Work

Grading Breakdown

Programming Expectations

The course will be programming-intensive. You will be submitting one lab assignment, on average, per week, and a programming project will be assigned mid-semester. You should also be completing your in-class module exercises.

You are expected to submit well-written code:

Late Work Policy

Assignments including modules and labs may be submitted late with a 10% deduction per day late.

You will have two “late passes” per semester to use on modules and labs. To use a late pass, notify me which assignment you would like to use it on, and you may turn that assignment in one week late for full credit.

Late passes may not be used on the final project or exams.

In cases of personal illnesses, emergencies, or documented accommodations, assignments may be submitted late for full credit if you notify me of your situation.

Attendance Policy

Regular attendance for the entire class time is expected. You should not miss more than 4 total sessions (including lecture and lab). If you have to quarantine due to COVID or miss class for other legitimate reasons you will not be penalized.

Self-Guided Module exercises

Each lecture will be accompanied by a self-guided worksheet. This module exercise is to complement in-class content and to assist you in reviewing the material. In-class module exercises are due one week from the lecture in which they are assigned.

Labs

Labs are short-to-medium size programming assignments that are designed to reinforce lecture. This course has a formal laboratory component. You are expected to attend each lab for the entire 50 minute lab period. Some labs may require that you work in teams of two or more. Almost all labs will require more than the 50 minute alloted time to complete, so please expect to have to spend extra time on the labs.

Labs are due at 11:59 pm on the night prior to the next lab (for this course, that means 11:59 pm Thursday evening), unless I explicitly provide a different deadline. Note that some labs are more like programming projects, so might require two weeks to complete. In that case I will explicitly inform you of this.

Programming Project

The programming project will be written in the C++ language, and must compile without warnings using the GNU g++ compiler and the -Wall flag on the department’s Linux machines (cs01 - cs06 and turing2).

Quizzes

There are four in-class quizzes. Each quiz is worth 5% of your grade, for a total 20%.

Class Communication

I will use two primary forms of communication in this class: email announcements and Slack. You are responsible for remaining up to date on any information sent by email or posted to Slack. This may include clarifications to assignments, updates on grading rubrics, and changes in office hours.

For all general course information, questions, and clarifications, please use Slack. I hope that the Slack workspace can be an extension of our classroom community where we can share questions and answers for the entire class to view and learn from.

If you have personal, individual issues you’d like addressed, you should send those by email to me. However, all course related topics should be directed to Slack.

Course Policies

Illness policy

If you are ill and it will cause you to miss class, lab, or an assignment, you should let me know in advance, if possible. It is your responsibility to catch up with any missed material if you are able to do so. If not, then immediately on return, work out a time-frame with me on when work will be submitted.

Academic Integrity policy

It is very important in this course (and in life), that your work be your own. These guidelines will help you achieve that.

You must:

You may:

You may not:

The Honor Code will apply to this course. Please read through the code carefully.

Generative AI

You will almost certainly be using generative AI in some way for the rest of your career. You may use generative AI tools for homework, labs, and project in the following manner.

You must:

You may:

You may not:

This policy is subject to change as we all learn more about how GenAI works and doesn’t work as part of learning college level course content.

Disability Services

Any student who may need an accommodation based on the potential impact of a disability should contact Disability Services (or call 804-662-5001) to establish eligibility and to coordinate reasonable accommodations.

If you are approved for classroom and/or testing accommodation(s) please make sure to submit a Disability Accommodation Notice to me at this link.

Wellness

If any issue arises that may limit your ability to participate in class, for example, personal illness, family emergency, etc., please be sure to discuss these matters with me as soon as possible and accommodations will be made available to you as appropriate.

Feelings of being overwhelmed are unfortunately quite common in the university environment. You are not alone, and there are a number of resources available to provide support in those moments. Learning to ask for help is an important part of the university experience, and if you or anyone you know experiences any academic stress, difficult life events, or feelings of anxiety or depression, we strongly encourage you to seek support. UR offers counseling services, and also consider reaching out to a friend, family or faculty member you trust for help.

If you or someone you know is feeling suicidal or in danger of self-harm, call someone immediately, day or night:

Weinstein Learning Center

Academic Skills Center: Academic coaches assist students in assessing and developing their academic and life-skills (e.g., critical reading and thinking, information conceptualization, concentration, test preparation, time management, stress management, etc.). Peer tutors offer assistance in specific subject areas (e.g., calculus, chemistry, accounting, etc.) and will be available for appointments in-person and virtually. Peer tutors are listed on the ASC website. Email Roger Mancastroppa (rmancast@richmond.edu) and Hope Walton (hwalton@richmond.edu) for coaching appointments in academic and life skills.

English Language Learning: assists multi-lingual and international students in honing their language, academic, and/or intercultural skills. Among other available services for students are one-on-one tutoring, group workshops, and semester-long classes on writing and U.S. culture. Please contact Dr. Bohon, Director of English Language Learning, at Leslie.Bohon@Richmond.edu for more information and appointments.

Quantitative Resource Center: Provides services related to quantitative and computational learning across the curriculum through tutoring, consultation and training.

Speech Center: Assists with preparation and practice in the pursuit of excellence in public expression. Recording, playback, coaching and critique sessions are offered by teams of trained student consultants. During scheduled appointments, consultants assist in developing ideas, arranging key points for more effective organization, improving style and delivery, and handling multimedia aids for individual and group presentations. We look forward to meeting your public speaking needs.

Technology Learning Center The TLC is a staffed public lab dedicated to supporting digital media projects. Services include camera checkout, video/audio recording assistance, virtual reality, poster printing, 3D printing and modeling. The TLC is located on the second floor of Boatwright Library.

Writing Center: Assists writers at all levels of experience, across all majors. Students can attend walk-in hours at Boatwright Library (room 171A) with trained writing consultants who offer friendly critiques of written work.

Other Campus Services

Boatwright Library Research Librarians (289-8876): Research librarians help students with all steps of their research, from identifying or narrowing a topic, to locating, accessing, evaluating, and citing information resources. Librarians support students in their classes across the curriculum and provide individual appointments, class library instruction, tutorials, and research guides (libguides.richmond.edu). Students can contact an individual librarian or ASK a librarian for help via email, text (804-277-9ASK), or chat.

Career Services (289-8547): Can assist you in exploring your interests and abilities, choosing a major or course of study, connecting with internships and jobs, and investigating graduate and professional school options. We encourage you to update your profile in Handshake and schedule an appointment with a career advisor early in your time at UR.

Counseling and Psychological Services (289-8119): Assists currently enrolled, full-time, degree-seeking students in improving their mental health and well-being, and in handling challenges that may impede their growth and development. Services include brief consultations, short-term counseling, skills-building classes, therapy groups, crisis intervention, psychiatric consultation, and related services.

Acknowledgments

Much of the material for this course comes from previous iterations taught by Prof. Doug Szajda (Spring 2023). Material was also adopted with permission from The George Washington University course CS 2113 taught by Prof. Adam Aviv and others. Thank you.