CMSC 240: Systems Software Development
Spring 2021
Course Syllabus
- Instructor: Doug Szajda, dszajda@richmond.edu,
219 Jepson Hall, (804)-287-6671 (campus ext. 6671).
- Meeting Times:
- Lecture: TR 11:00 - 12:15, ONLINE (Zoom link on Blackboard).
- Lab: F 9:15 - 10:05 a.m., ONLINE (Zoom link on Blackboard).
- Required Text:
- C++ Crash Course by Josh Lespinoso
- Office Hours:This semester, per university rules, faculty are not supposed to hold in-person office
hours. If you need to see me, please email me and we will set up a time for a Zoom call.
- Course Summary: This is a 1 unit course on software systems development. It it intended to provide
an introduction to the techniques necessary for the development of large-scale software systems. A secondary
goal is to provide students with a foundation in the techniques of programming using "modern" C++.
Key topics include (but are not limited to)
- Introduction to the modern C++ programming language, including
- Classes, inheritance, and polymorphism
- Pointers and dynamic memory allocation
- The C++ Standard Template Library (STL)
- Lambda Expressions
- Copy and move semantics
- Threading and parallel computing support
- Introduction to Unix/Linux environments
- The development life cycle
- Object-Oriented Programming and other design considerations
- Patterns, reuse, and usability
- Repository management
- Testing, debugging, and static/dynamic analysis
- Object-oriented design
- Course Goals: The goals of this course, a foundational systems course, go beyond learning the material listed
above. Additional goals include (but are not limited to):
- Fundamental computer science principles: During the semester, we will see, in the context of
software systems development, a number of principles used throughout computer science. I will emphasize these principles and
you will be responsible for knowing them once presented.
- Professionalism: In speaking with people who hire in industry and recruit grad students in academia,
it has become clear that professionalism is one of their top concerns. Specifically, they are seeing graduates who
don't understand what it entails. This is not an issue unique to UR, but it is an issue that needs to be addressed.
In this context, professialism means considering questions such as (but not limited to) the following:
- Does a person reliably and consistently show up to appointment and meetings, and do so on time (if you're one of
those students who likes to wander in to class three minutes late, give that a thought)?
- Does a person start work in a timely manner?
- Does a person work well in a group, performing their share of the work, considering the input of all
group members, and respecting colleagues of all genders and demographics?
- Does a person understand time management (e.g., a six week project requires six weeks of work, not a frantic couple of
days prior to a deadline).
- Does a person communicate well, and in a timely manner, with their supervisor(s)? This means, for example,
that if a group project is falling behind, or a group member is not performing their share of the work, the supervisor is
notified well before any deadlines, so that the issues can be sorted out and work reassigned sufficently early that
deadlines can still be met.
- Does a person meet deadlines? For example, a 5:00 submission deadline means just that. It does not mean 5:01 or 5:15.
It means that if an important client is waiting to see a finished presentation at 9:00, the presentation is ready to go at
9:00 sharp (so, for example, the client is not waiting while people race around trying to set up the presentation).
- Does a person do the appropriate background work (e.g., are specification documents read completely and thoroughly)?
I will be explaining the level of professionalism I expect from my students, and the consequences (including grade penalties)
for failing to meet those expectations.
- Pre-requisites: CMSC 221 is a pre-requisite for this course.
- Lectures: Notes for
lectures are posted prior to class on the ``slides''
column of the course web page. I recommend that you make it a habit to
download these notes before hand. Having the notes means less note
taking on your part, which should allow you to better focus on the
lectures (at least that is the theory). Please note that while the
lecture notes are fairly comprehensive, their primary purposes are to
free you from having to copy everything I write on the board,
and to provide me with an outline of the topics I wish to cover. Thus
what I write or say in lecture will not exactly mirror the content of the
notes.
- Labs:
This course has a formal laboratory component. Though done remotely this semester, you are expected
to attend each lab for the entire 50 minute lab period with video enabled!.
When completing labs, students will work in teams of two. If we have an odd
number of students in the class, then each week one student will work alone. Students who are
required to work alone will work alone at most once during the semester.
Labs are due at 5:00 pm on the night prior to the next lab (for this course, that
means 5:00 pm Thursday evening).
Both members of a 2-person (or 3-person for some labs) team receive the same grade.
One final note: 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.
- Reading: You are strongly encouraged to have read, prior to lecture, the material
corresponding to the topic covered (should there be such material listed).
Doing so allows you to raise question during lecture as
the material is being presented. There are two advantages to this: 1) It allows
your classmates to hear discussion of the issue, and 2) it potentially saves you
a trip to my office during office hours. Most important, it's a better way to learn.
Much of your learning in life will be accomplished via reading, so it's good to
get in the habit now. Moreover, no lecture, no matter how good (or bad, as the case
may be) will proceed at a pace that is perfect for every student (or any student, for that matter).
Reading the material prior to lecture allows you to spend time on those concepts that you find
confusing, and quickly pass over those concepts you find easy. And as said above,
it allows you to ask questions about concepts that may remain confusing even after
careful reading and consideration.
- Attendance Policy: Regular attendance for the entire class time is
expected! Over the past few years I've noticed a disturbing trend -- some
students disappear for weeks on end. So that you are aware, during "normal" times,
CS program policy states that students who miss more than 4 total sessions (including lecture and
lab) receive a grade of V for the course. I typically strictly adhere to this
policy! I only mention this now because it shows how important we consider attendance to be in order
for students to succeed in the course. (Please see some other reasons below.) COVID changes to
attendance have removed the V grade and the punitive incomplete as a grading option. However, be
aware that you can still fail this course should you miss too many lectures (and to be clear,
students who have to attend remotely for legitimate reasons are not counted as being absent).
Of course this is not a normal semester. Because of that, all faculty are required to take attendance
AND have a record of where students are seated (for potential contact tracing purposes) for every class
session. For this reason, I will assign seats on the first day of class. You will sit in those seats
every day that you attend, because I will use the seating chart to take attendance! I note that this
is a Virginia state requirement in response to the COVID situation. It is not something I devised.
If you are one of those students who wonder why attendance is necessary if
you are meeting the required goals of the course, then I would ask why
you are at UR and not enrolled in an online university. Here are some reasons.
- At some point in the future, you may ask for a reference or letter for
a job or graduate school. In that letter I will be expected to comment on your demeanor
during lecture, the quality of your comments (and whether you regularly comment),
whether you are engaged in learning the material (as opposed to surfing the web from
the back of the room), your interactions with your classmates,
and your general level of participation.
- Showing up for class, on time and ready to work, is an indication that you
have the necessary discipline to succeed in this field.
- Though slides and any texts or papers are thorough, they do not cover everything. Nor
are they always effective at communicating the primary ideas and takeaways from the material.
This is what I provide. If you're not in class to hear it, you likely won't know it.
If you should miss a class due to illness,
you are responsible for viewing the Zoom recording of the session(s), which will be found
in the course Blackboard pages.
Regarding arriving to class late, in accordance with the idea of professionalism mentioned above, I expect
students to arrive at class on time (whether attending in-person or remotely).
I do take attendance at the beginning of every meeting (lecture and lab).
If you arrive to class late (meaning after I take attendance) it will count as half an absence. I have mentioned this
in class before: Yes, sometimes events occur that cause one to be late. But students who arrive consistently late to class
are sending the message (even if they do not intend to) that this course is not sufficiently important. After all,
would you arrive late to a meeting with your corporate CEO? If not, then why is it that it's OK to arrive to class late?
I hope that gives you something to think about.
- Remote Attendance: Though everyone is attending remotely this semester, I will still be
taking attendance. I expect that each of you will be ``present'' meaning video enabled
if you are attending synchronously. If you don't feel like providing the class with a visual of
your venue (certainly understandable), then please choose an appropriate background.
- Laptop/Smart phone policy Please keep cell phones silenced
and put away (not on the desk, or in your notebook, or in your lap (we
can see you texting)). In the rare event that
you need to be available for emergency phone calls, please talk to the
instructor about it before class. If you take notes on your computer,
please stick to course related work. Before class begins, please
close all programs not related to the class including any email clients,
Facebook, on-line shopping, ESPN, etc. You may think you are able to multitask,
but the scientific evidence suggests otherwise. Also, multitasking on
your computer is likely distracting to others behind or next to you (there is
scientific evidence to support this too). For more information:
href=http://www.sciencedirect.com/science/article/pii/S0360131512002254
- COVID-related Policies:
- We are facing a challenging situation in which all of us are
called on to make a good faith effort to be flexible and to make
decisions in the best interest of the community, including staying
home when sick. Students who are sick should not attend class,
will not be required to provide formal documentation from a health
care provider, and will not be penalized for absences.
However, students must:
- Notify instructors in advance of the absence, if possible.
- Contact the Student Health Center if sick.
- Keep up with classwork and attend online class sessions if they are able to do so.
- Submit assignments digitally on time whenever possible.
- Work with their instructors to try to reschedule any missed assignments.
- Stay in close communication with their instructors.
This attendance policy puts everyone on their honor. It requires
that faculty and instructors trust the word of their students
when they say they are ill, and it requires that students report
the reason for their absence truthfully. Falsely reporting a
reason for an absence is an honor code violation.
- Because some students will be studying remotely, and others may have to due to quarantine, all lectures
will be live streamed via Zoom, as well as recorded. The recordings will be available on the course Blackboard
page. This is, of course, also an advantage for students who have attended in-person: you have the opportunity
to go back through the lectures at whatever pace works for you!
Regarding these recordings, by attending the course you are implicitly agreeing to the following:
Students shall not:
- Disclose, share, trade, or sell class recordings with/to any other person, organization, business, or institution; and/or
- Post/store these recordings in a location accessible by anyone other than the student, including but not limited to social
media accounts.
Students must also comply with any instructions or directions from their faculty regarding the use of such recordings.
Students are required to destroy any recordings that were made when they are no longer needed for student's academic
work.
Failure to abide by this policy will be a violation of the
Standards of Student Conduct; such issues will be sent to the appropriate University Conduct Officer.
- Masks: Per university policy, masks must be worn at all times when in the classroom and upon entering and leaving tne classroom. Of course, a consequence of this is that students may not eat or drink when in lecture.
- Be Flexible: University administrators, staff, and faculty have done our best to anticipate issues that
may arise this semester. But this is a new experience for all of us. For this reason, it is necessary that
we all demonstrate some flexibility. Some of the policies in this syllabus may need to be changed to accomodate
contingencies that arise. Please be aware of this, and prepared for what will likely be more change than required during
a normal semester.
- Grades:
Grade Component |
Date |
Percent of Grade |
Exam 1 |
Distributed Friday, Feb. 19. Due Friday Feb. 26, 5:00 p.m. |
15% |
Exam 2 |
Distributed Friday, March 26. Due Friday April 2, 5:00 p.m. |
15% |
Final Programming Project |
Due Monday April 26, 5:00 p.m |
20% |
Labs |
N/A |
30% |
Final Examination |
Distributed Friday, April 30. Due Wednesday, May 5, 5:00 p.m. |
20% |
Final grades will be adjusted, if necessary, to reflect the following ideal as
much as possible.
- An ``A'' means that your knowledge of this material is exceptional.
When you have to build on the material that you
learned in this class in your future classes, then you will be able to do
so easily.
- A ``B'' means that you have a good understanding of most of the material,
but may have some gaps in your understanding, or are not as comfortable with
some aspects of it as you might be. As such you may want to review this material before taking more
advanced classes. You will be able to apply the material in this class,
but you may have difficulty doing so with some of it.
- A ``C'' means that your knowledge of this material is average/mediocre.
You will likely struggle to apply this material in your
future classes, as you have struggled learning the material in this class.
- A ``D'' means that you are not ready for future classes that builds on
material from this class.
- An ``F'' means that in addition to the conditions for a ``D'' grade,
you also didn't try and/or failed to hand in work.
- A ``V'' means that you missed too many classes to pass the class, regardless
of your performance on the work.
- Exams: All exams in this course will be take home, distributed electroncially,
and submitted electronically. I have not yet decided on the exact format and time limit requirements.
This is to be determined.
Students who fail to submit an exam by the required deadline and
prior permission from me to take the exam at a different time, will receive
a grade of zero for the exam. Of course, I am also a realist and human -- if there is an illness
related reason for being late with submission (e.g., being placed quarantine, isolation, or the like),
then there will be no penalty for that.
For each exam, you will be allowed to create a one page "cheat sheet" --- you may fill
both sides of a single 8.5'' x 11'' page of paper with anything you feel may help you on the exam, with the caveat that
your print (or handwriting) font must be no smaller than 9pt. Your cheat sheets should be submitted
as part of your exam.
- My ``exam discussion policy": Once a student has begun an exam,
I will answer (for that student) only those questions that concern clarification of the intent of a problem. That is,
I will not answer questions that seek to determine whether the problem was done correctly, or whether a particular approach is
wise (or unwise).
- Homework: There will be approximately five homework assignments. Two each corresponding to each of the midterms, one dedicated to material that only appears on the final.
For each assignment, I will choose a random selection of problems to grade. Of course you will not know beforehand
which problems will be graded.
Homework Submission: You may hand write your homework, in which case it must be legible! And to be
clear, the term legible means one should be able to read it without a magnifying glass or any
more effort than reading a well typeset book. You are also welcome (and encouraged)
to complete your homework using a typesetting package (e.g., LaTeX), when that is
reasonable (often, when problems require diagrams, typesetting it is not reasonable).
Regardless of the method you choose to use to complete your homework, you must
submit a hard copy to either my department mailbox or my office (mailbox on my
office door) by the due date and time. Do not email me your homework! (I will
ignore homework received via email.) Multi-page homework must be stapled. Also,
your homework must include the work you did in determining your solution.
LATE HOMEWORK WILL NOT BE ACCEPTED!!! In past courses, I have sometimes allowed late
homework to slide. I can't in this course. There is so much material to grade that I can't allow folks to hand stuff in late.
- Labs: The first four labs require MIPS assembly programming. Your
code must assemble and run correctly on the QTSpim software package, either on
one of the department lab machines or on your own laptop (I require a laptop
since you need to demonstrate your solution).
Lab 5 is coded in C/C++. It must compile
without warnings using the GNU g++ compiler and the -Wall flag on the department linux machines.
- Final Programming Project:This 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.
Programs should be submitted to me by sending an email to the appropriate submission email address with your single
project tar file as an attachment, which
will automatically load the submission to the appropriate Box folder.
PROGRAMS NOT SUBMITTED TO THE CORRECT BOX FOLDER AND/OR PROGRAMS THAT FAILS TO COMPILE ON THE LINUX CLUSTER
WILL RECEIVE A GRADE OF 0. Note also that when grading programs, they must run ON THE LINUX CLUSTER ,
not on your laptop, tablet, etc.
- Lab, Project, and Test Code Submission: If you have taken a course with me recently, then this procedure should be
familiar. At the beginning of the semester I will put a file called ``submission_email_addresses.txt''
in the "content" section of the course Blackboard
page (NOT the course web page). All work should be submitted as a single tar or zip file.
In order to submit work, you send an email, with your single submission file as an attachment,
to the email address listed for that assignment. This has the effect of depositing your submission in
the appropriate Box folder. Note that ALL submissions must include some indication, in the title of the submitted
file, of who the submission is from.
SUBMISSIONS NOT PRESENT IN THE CORRECT BOX FOLDER AT THE SUBMISSION DEADLINE RECEIVE A GRADE OF 0. So, if you send email to my
regular email, or submit your work using the wrong email address (so it ends up in the wrong Box folder), then
it is treated as if you have not submitted the work.
- Two different kinds of Box folders! Know the difference! I
use two different kinds of Box folders in this course (and in all of
my courses). One class of folders is for work submission (in this course,
that means labs, projects, and at times part of exams).
Material is submitted to this class of folders by sending an email to
a project specific address. Those addresses are contained in a file
in the content on the course Blackboard page. Everyone in the class submits to
the same project specific Box folder.
The other class of folder are individual folders shared between myself and each student.
The folder I share with you in this manner is visible only to you and myself (and possibly
a grader, but we don't have one for this course). These individually shared folders
are exclusively for grade forms! They are not to be used for submission of
projects. If you accidentally place a project submission into your individual folder,
I will not see it and will assume you have not submitted the project!
- Extra Credit: There is none in this section of the course -- there is plenty of work to do without assigning extra stuff
to push up your grade.
- The Other Student Criteria: When grading tests and
homework, I use the Other Student Criteria
(OSC). All solutions must meet this. The Other Student Criteria
states that a solution should provide enough written explanation
so that another student in the class (who could not complete the
assignment) could read the submitted material and, without
asking questions, understand a correct answer.
- The Myth of Grade Negotiation: I have noticed over the past few years a shift in
the way students view grades on exams and assignments. A (somewhat vocal) minority
of students view these grades as merely an initial offer in a process of negotation. That is a
myth. The grade you recieve on assignments is final! The grades I assign are
carefully considered. Attempting to earn an extra couple of points is a waste of your time and
mine, as well as being orthogonal to the prime purpose of the course, which is to learn the
material. I am very happy to meet to discuss assignments and exams so that you may better understand
the material, but will not change your grade.
- My "Managerial" Philosophy:
I apologize for having to mention this, especially since you are almost all third or fourth years and thus do not need this clarification. Every once in a while,
however, I encounter a student who tests the boundaries, and for that student, I like to have a few things in writing.
My basic philosophy is this: You are adults. I treat you as if you are adults, and expect you to act
as adults. For the 1 out of 100 students that does not understand what this means, here is
a little clarification of some (though not all) of the ideals that this entails:
- You begin assigned work in a timely manner (this includes reading).
- You complete assigned work on time (this includes reading).
- You complete assigned work and hand it in on time.
- If an emergency arises (as they sometimes do) that precludes handing in work or taking an exam, you contact me before the work (or exam) is due.
- You accept responsibility for your actions (and, as the case may be, your inactions).
- Most important, just because some specific behavior is not mentioned here, that does not mean it's "OK" to engage in it.
You know what reasonable expectations are for students, as do I. I treat you like adults and expect you'll act responsibly.
- Incomplete Grade Options: There was a time a few years back when it was necessary for me
to assign an incomplete grade only about once every two years, typically for a student who
became ill late in the semester and needed to travel home to recover. It seems recently that there has been a rash
of incompletes, to the point where no fewer than 25% of my CS 301 class two years ago required incompletes. So,
I have had to revise my policy. There are only two reason why I will allow a student to receive an incomplete grade:
they are ill and have to go home to recover (I expect verification from a doctor) or there is a death in the family
late in the semester (I also expect to see verification, as unfortunately, there have been instances of students lying
about this).
- Collaborating on homework/programming assignments: Programming projects
and homework may be discussed with others subject to the
``Empty Hands'' policy ---
you may freely discuss ideas and approaches with other students
subject to the restriction that each student must leave the discussion
without any written or otherwise recorded
material. In your homework write-up or source code, you must also
document any person or source that you consulted for that project.
Failure to comply with this policy will be treated as an Honor
Code violation.
One final note: some of the programming assignments
for this semester may have been assigned in previous semesters.
While you may consult previous class members concerning projects,
you are not permitted, under any circumstances, to receive
or view either hard copies or electronic copies of all or parts
of their project submissions! You can use your friends to
get help, but they should not be providing you with their code
(just as in an English class, you might discuss the works of Dickens
with a friend, but should not use the paper that they submitted
as the basis for your own submission).
- Note: Many of the handouts, presentation slides, assignments, and exam problems used in this course use material borrowed from Professors Lawson and Denny. I am
particularly grateful to them for generously allowing me to use their material as the basis for my material (including, in many cases, simply using their material word-for-word).
- Disability Support Services: If you believe you have a
disability requiring an accommodation, please follow the procedures
listed on the University of Richmond Disability Services website
[https://disability.richmond.edu] to begin the accommodations process
as soon as possible. If you already have a University of Richmond
Disability Accommodation Notice (DAN), please inform
me as soon as possible, so that I am aware of your accommodations. No
student will receive accommodations of any kind without a DAN.
- Additional University Resources:
If you experience difficulties in this course, do not hesitate to
consult with me. There are also other resources that can support you
in your efforts to meet course requirements.
- Academic Skills Center
(http://asc.richmond.edu),
289-8626 or 289-8956): Assists students in assessing their
academic strengths and weaknesses; honing their academic skills
through teaching effective test preparation, critical reading
and thinking, information conceptualization, concentration, and
related techniques; working on specific subject areas (e.g.,
calculus, chemistry, accounting, etc.); and encouraging campus
and community involvement.
Hours at the Center are: Sunday
through Wednesday 3:00-9:00 p.m. and Thursday 3:00-7:00 p.m.
On-call tutors are also available.
- Boatwright Library Research Librarians
(http://library.richmond.edu/help/ask/
or 289-8876): Research librarians assist students with identifying and
locating resources for class assignments, research papers and other
course projects. Librarians also provide research support for
students and can respond to questions about evaluating and citing
sources. Students can email, text or IM or schedule a personal
research appointment to meet with a librarian in his/her office on the
first floor Research and Collaborative Study area.
- Career Services
(http://careerservices.richmond.edu/
or 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 schedule an appointment with a
career advisor early in your time at UR.
- Counseling and Psychological Services
(https://wellness.richmond.edu/caps/index.html
or 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 short-term counseling and
psychotherapy, crisis intervention, psychiatric consultation, and
related services.
- Speech Center
(http://speech.richmond.edu
or 289-6409): Assists with preparation and practice in the
pursuit of excellence in public expression. Recording, playback,
coaching and critique sessions offered by teams of student
onsultants trained to assist in developing ideas, arranging key
points for more effective organization, improving style and
delivery, and handling multimedia aids for individual and group
presentations.
- Writing Center
(http://writing.richmond.edu
or 289-8263): Assists writers at all levels of experience,
across all majors. Students can schedule appointments with trained
writing consultants who offer friendly critiques of written work.
|
|
|