605.601.81 - Foundations of Software Engineering

Computer Science
Spring 2024

Description

Fundamental software engineering techniques and methodologies commonly used during software development are studied. Topics include various life cycle models, project planning and estimation, requirements analysis, program design, construction, testing, maintenance and implementation, software measurement, and software quality. Emphasized are structured and object-oriented analysis and design techniques, use of process and data models, modular principles of software design, and a systematic approach to testing and debugging. The importance of problem specification, programming style, periodic reviews, documentation, thorough testing, and ease of maintenance are covered. Course Note(s): The required foundation courses may be taken in any order but must be taken before other courses in the degree.

Expanded Course Description

Software engineering is concerned with the construction of large software systems. Such systems require the efforts of a group of people over a large span of time. This course will focus on techniques that have been found to be effective in the development of these systems. There will be lectures, readings, discussions, research, and a group project. The topics discussed will include software management, software analysis and design techniques, software quality, testing and maintenance.

The course will be difficult and time consuming, so you must have satisfied the prerequisites listed below.

Prerequisites

Instructors

Profile photo of Samuel Schappelle.

Samuel Schappelle

sschapp1@jhu.edu

Profile photo of Joseph Demasco.

Joseph Demasco

Profile photo of Jeffrey Garonzik.

Jeffrey Garonzik

jgaronz2@jhu.edu

Course Structure

The course content is divided into modules. Modules can be accessed by selecting “Course Content” on the menu. A module will have several sections including the overview, content, videos, readings, wikis, discussions, quizzes, and assignments. The sections of the module should be visited in the order they are presented.  Usually, it is best if you watch all of the videos before taking the quiz. The quizzes are based on the content of the lecture videos. We have included transcripts of all the videos.  The transcripts contain the same information that is in the videos, so it’s your choice whether you watch the videos or read the transcripts, or both. 

Consult the course outline for due dates for discussions, quizzes, assignments, and project deliverables.  These due dates also appear in the Calendar.  We are making all of the modules available at once so you can always see what is coming up in future modules.  While it is technically possible, then, to binge watch the entire course, we don’t recommend it.  It is best if everyone stays in sync with the schedule shown in the Course Outline document.

A significant part of the course includes participation in a group project. You will help manage, specify, design, code, test and document a medium-sized project. You can find information about the group project in the Syllabus and Course Information section (the same place you found this syllabus). 

In each of the modules there will be a quiz.  You will have up to two chances to take the quiz.  If you take it twice, your score will be the average of the two attempts.  The quizzes are based entirely on material that is covered in the lectures.  The lectures, in turn, are based on the course objectives listed below. 

There will be several homework assignments throughout the semester.  The purpose of these assignments is to encourage you to go beyond what is in the lectures and do some independent research on topics related to the lectures.

Course Topics

Course Goals

This class will prepare you for many of the courses that follow in your curriculum. If your job is in software engineering, you will be a better software developer and a more valuable asset to your development team. You will stand a better chance of advancement and promotion. Your peers will look up to you for all of the experience, skill, and knowledge you will gain from this course.

Course Learning Outcomes (CLOs)

Textbooks

There is no required textbook for this course.  We will not make any particular reading assignments.  However, you will be expected to do further research on various topics, and you may want to explore more information on your own from time to time.  You can do this research in any textbooks that are available, or, in fact, much useful information is available on the Internet.  Here are four excellent textbooks on software engineering that are recommended:

While these books are optional for this course, if your job involves software engineering, you should consider investing in one.  The book is to be used as supplemental reading. All test questions will be based on material we discuss in on-line lectures.  Homework assignments will usually require more in-depth research in textbooks or the Internet. 

Student Coursework Requirements

It is expected that each module will take approximately 6-11 hours per week to complete. Here is an approximate breakdown: working with your team on the group project (approximately 3-5 hours per week), listening to the audio annotated slide presentations (approximately 1–3 hours per week), participating in discussions or wikis or doing homework assignments (approximately 2–3 hours per week on average). 

This course will consist of three basic student requirements:

Assignments

To provide you the opportunity to delve deeper into certain topics that may be treated rather lightly in the course materials, you will be required to submit short essays from time to time. 

All assignments are due according to the dates in the Course Outline.

Late submissions will be reduced by one letter grade for each week late (no exceptions without prior coordination with the instructors).

There are two types of assignments that you may find in this course.

Each assignment will have its own grading rubric, which will be posted along with the assignment.

Problem sets will consist of a set of questions to be answered or problems to be solved.  They usually involve application of principles and techniques discussed in the lectures.  There are expected correct answers to these problems and you will be graded based on how close you come to the correct answers as well as how well you justify your answers. 

Technical papers are treated as serious academic writing. Usually what we are looking for is support for your ideas from the professional literature.  We look for citations (footnotes or endnotes) for information that you find in your research.  Either MLA or Chicago Manual of Style citation formats are recommended.  Sometimes if you have experience in the area of the assignment, you can bring that in, as well.  You should have a title page, with an abstract.  Your bibliography can be on its own page at the end. 

Good academic writing is important.  There should be an introductory paragraph and a concluding paragraph.  It is frequently helpful to divide your paper up into sections, each with its own heading. You will receive a score of 0 if you turn in a paper that has no citations in the text to indicate where you copied or paraphrased your information from.  It is technically plagiarism if you don’t provide citations.  It is not sufficient to just put a list of references at the end of the paper.   

If we suggest a length for an assignment, it is only to give you an idea of how many words to write.  Our length estimates are based on 12 point font, 1 inch margins, double spaced.  Of course if you follow our recommendations about title pages, sections, etc., you will have more than the suggested number of pages, which is OK.  The length estimate is just a guideline.  A paper that is twice as long as suggested is too long, and a paper that is half as long is too short.  Remember that we have to read a lot of papers, most of which are rather similar.  Do what you can to make your paper stand out. 

Group Project

You will be working with other students on a semester long project.  The group project is described in a separate document.  The grading criteria of the project are described in that document. 

All students in the team will receive the same grade on the project deliverables.  The team members will be asked to evaluate their teammates.  This evaluation is part of the project grade. 

It is expected that every member of the team will participate in the project.  If one member fails to contribute a fair share of effort, and the other team members request it, that member will be removed from the team and will receive a failing grade for the team project component of the final grade.

Quizzes

Each of the modules includes a quiz.  You will have up to two chances to take each quiz.  If you opt to take a quiz twice, your scores will be averaged together.  The quiz questions are drawn from the lectures themselves. Each quiz has the same weight, regardless of the number of questions.

Grading Policy

A grade of A indicates achievement of consistent excellence and distinction throughout the course.

A grade of B indicates work that meets all course requirements on a level appropriate for graduate academic work.

A grade of C indicates that the quality of the work falls short of expectations. 

EP uses plusses and minuses in grading.

97.5 – 100     A+
93.5 – 97.49  A
89.5 – 93.49  A-
86.5 – 89.49  B+
82.5 – 86.49  B
79.5 – 82.49  B-
69.5 – 79.49  C
<= 69.49       F

Final grades will be determined by the following weighting.  There is a column (weighted average) in the Grade Center in blackboard that uses this formula to compute your average.  However, the weighted average does not mean much until the end of the term because all items that have no grades yet will be counted as zeros by Canvas.  You need to make sure that by the end of the course, you submit something for each item in the grade center, even if it is late.  A low grade on an item is better than a zero. 

Item

% of Grade

Assignments

10

Quizzes

50

Group Project

40

Course Policies

Collaborative learning is encouraged in this course, using the communication capabilities of Canvas or by other methods. The project is a team effort.  However, you are required to work independently on writing assignments and exams, without assistance from or consultation with anyone else.  If the Instructors have reason to suspect collaboration on writing assignments or examinations, no credit will be given for the assignment or exam. Furthermore, students must abide by the JHU plagiarism policy as described and elaborated on in the link below. 

Since a lot of your participation in this course involves writing, most of the ideas that you will present will come from other people and sources. A simple rule is this: You must provide a citation for anything (text, images, etc.) that you either copy or paraphrase from some source (including the Internet) in your writing. Simply put, plagiarism is a violation of academic policy and will result in a failing grade in the course or even expulsion from the program. For more information on this please see the section on the Academic Misconduct Policy below.

Basically you can expect to earn an A or B in this class as long as you participate in the group project, turn in all of the assignments, don’t plagiarize, and do satisfactorily on the quizzes. 

Academic Policies

Deadlines for Adding, Dropping and Withdrawing from Courses

Students may add a course up to one week after the start of the term for that particular course. Students may drop courses according to the drop deadlines outlined in the EP academic calendar (https://ep.jhu.edu/student-services/academic-calendar/). Between the 6th week of the class and prior to the final withdrawal deadline, a student may withdraw from a course with a W on their academic record. A record of the course will remain on the academic record with a W appearing in the grade column to indicate that the student registered and withdrew from the course.

Academic Misconduct Policy

All students are required to read, know, and comply with the Johns Hopkins University Krieger School of Arts and Sciences (KSAS) / Whiting School of Engineering (WSE) Procedures for Handling Allegations of Misconduct by Full-Time and Part-Time Graduate Students.

This policy prohibits academic misconduct, including but not limited to the following: cheating or facilitating cheating; plagiarism; reuse of assignments; unauthorized collaboration; alteration of graded assignments; and unfair competition. Course materials (old assignments, texts, or examinations, etc.) should not be shared unless authorized by the course instructor. Any questions related to this policy should be directed to EP’s academic integrity officer at ep-academic-integrity@jhu.edu.

Students with Disabilities - Accommodations and Accessibility

Johns Hopkins University values diversity and inclusion. We are committed to providing welcoming, equitable, and accessible educational experiences for all students. Students with disabilities (including those with psychological conditions, medical conditions and temporary disabilities) can request accommodations for this course by providing an Accommodation Letter issued by Student Disability Services (SDS). Please request accommodations for this course as early as possible to provide time for effective communication and arrangements.

For further information or to start the process of requesting accommodations, please contact Student Disability Services at Engineering for Professionals, ep-disability-svcs@jhu.edu.

Student Conduct Code

The fundamental purpose of the JHU regulation of student conduct is to promote and to protect the health, safety, welfare, property, and rights of all members of the University community as well as to promote the orderly operation of the University and to safeguard its property and facilities. As members of the University community, students accept certain responsibilities which support the educational mission and create an environment in which all students are afforded the same opportunity to succeed academically. 

For a full description of the code please visit the following website: https://studentaffairs.jhu.edu/policies-guidelines/student-code/

Classroom Climate

JHU is committed to creating a classroom environment that values the diversity of experiences and perspectives that all students bring. Everyone has the right to be treated with dignity and respect. Fostering an inclusive climate is important. Research and experience show that students who interact with peers who are different from themselves learn new things and experience tangible educational outcomes. At no time in this learning process should someone be singled out or treated unequally on the basis of any seen or unseen part of their identity. 
 
If you have concerns in this course about harassment, discrimination, or any unequal treatment, or if you seek accommodations or resources, please reach out to the course instructor directly. Reporting will never impact your course grade. You may also share concerns with your program chair, the Assistant Dean for Diversity and Inclusion, or the Office of Institutional Equity. In handling reports, people will protect your privacy as much as possible, but faculty and staff are required to officially report information for some cases (e.g. sexual harassment).

Course Auditing

When a student enrolls in an EP course with “audit” status, the student must reach an understanding with the instructor as to what is required to earn the “audit.” If the student does not meet those expectations, the instructor must notify the EP Registration Team [EP-Registration@exchange.johnshopkins.edu] in order for the student to be retroactively dropped or withdrawn from the course (depending on when the "audit" was requested and in accordance with EP registration deadlines). All lecture content will remain accessible to auditing students, but access to all other course material is left to the discretion of the instructor.