CMSC B353

Software Engineering

Spring 2021

Bryn Mawr lamp

About This Course

Writing a program is easy, but professional software developers face the challenge of "engineering" software: designing and implementing a software system in a way that it is efficient and reliable, and can easily be understood and modified by other developers.

This course will introduce you to various tools, processes, and techniques that are used by professional software engineers to create high quality software, focusing on software design and software testing. Additionally, you will apply these in the creation of a software system including a mobile front-end and a web-based back-end.

Developing high quality software is only part of what it means to be a professional software engineer. It is essential to be able to communicate with others, learn from others, and overcome obstacles together, particularly in a fast-paced, competitive environment. This course will give you experience working in a group, and increase your awareness of some of the challenges facing the modern software development industry, including diversity & inclusion issues, as well as understanding the social impact of software.

In completing this course, you will be able to:

  • Follow industry-standard software development process models
  • Apply best-practice principles and patterns to design a high quality software system
  • Develop mobile apps using Android and dynamic web apps using server-side JavaScript and Node Express
  • Create a comprehensive set of test cases for a piece of software
  • Work in a group to develop a complex software system
  • Strengthen your understanding of the Java programming language

Topics will include:

  • Software Process Models
    • Traditional models: waterfall, RUP
    • Agile models: XP, Scrum
    • Continuous integration
    • Software configuration management
  • Designing Software
    • Software design principles
    • Software architecture
    • Class modeling and UML
    • Software design patterns
    • Distributed systems
  • Implementing Software
    • Defensive programming
    • Security
    • Readability and understandability
    • Efficiency
    • Threads and synchronization
  • Mobile and Web App Development
    • Android
    • WWW Basics
    • JavaScript
    • Node Express
    • MongoDB
    • User interface design and usability
  • Testing Software
    • Black-box testing
    • Mock objects
    • White-box testing

Students who wish to register for this course must have completed a Data Structures course (B206, H106, H107, or equivalent) and be proficient in Java.

Course Logistics

This section of the course will be conducted entirely online. There are no in-person components to this course whatsoever.

Class Meetings

Class meetings will be held via Zoom at the time designated by the College Registrar.

All students are expected to attend and participate in class meetings. However, students who cannot reasonably attend the live sessions, e.g. because of time zone differences or other conflicts, are welcome to register for this section; arrangements will be made for regular check-ins with the Instructor.

Class Preparation

There is no textbook for this course. However, background readings and videos will be made available in Moodle and will be assigned as preparatory material for each week's lectures. Students should expect to spend around one hour per week doing the readings and watching the videos, in addition to attending class meetings.

Assessment

There will be 6-7 programming assignments over the course of the semester and students will typically have one week to complete them. Assignments are likely to cover the following topics:

  • Java basics: runtime arguments, packages, working with external libraries
  • Software testing and test documentation
  • Software architecture and design patterns
  • Android application development
  • Web application development
  • Improving software efficiency

Unless otherwise indicated, students are expected to work alone on all programming assignments.

In the group project, students will work in a team of 3-4 to develop a system that includes mobile and web components that communicate with each other over the Internet. The project follows an agile software development methodology, and teams may define the functionality of their project as long as it has a clear potential for positive social impact or serves a humanitarian cause.

Additionally, there will likely be 1-2 exams, and students will also be expected to make contributions to the course through in-class participation and discussion board posts.

Schedule

The first class meeting will be held on Monday, February 15, at 11:10am EST.

The complete schedule of lectures, exams, assignments, project milestones, etc. will be made available to registered students in Moodle sometime in late January.

Creating a Welcoming Environment

The Bryn Mawr Department of Computer Science is dedicated to the cause of improving diversity, equity, and inclusion in the field of computing, and to supporting the wellness and mental health of our students.

Diversity and Inclusion

It is essential that all members of the course community – including the instructor, TAs, administrators, and students – work together to create a supportive, inclusive environment that welcomes all students, regardless of their race, ethnicity, gender identity, sexuality, ability, or socioeconomic status. All participants in this course deserve to and should expect to be treated with respect by other members of the community.

Class meetings, lab sessions, office hours, and group working time should be spaces where everyone feels welcome and included. In order to foster a welcoming environment, students of this course are expected to: exercise consideration and respect in their speech and actions; attempt collaboration and consideration, including listening to opposing perspectives and authentically and respectfully raising concerns, before conflict; refrain from demeaning, discriminatory, or harassing behavior and speech.

Wellness

Additionally, your mental health and wellness are of utmost importance to the course Instruction Staff, if not the College as a whole. All members of the instruction staff will be happy to chat or just to listen if you need someone to talk to, even if it’s not specifically about this course.

If you or someone you know is in distress and urgently needs to speak with someone, please do not hesitate to contact BMC Counseling Services: 610-526-7360 (610-526-7778 nights and weekends). If you are uncomfortable reaching out to Counseling Services, any member of the Instruction Staff will be happy to contact them on your behalf.

We understand that student life can be extremely difficult, both mentally and emotionally. If you are living with mental health issues such as anxiety, depression, ADHD, or other conditions that may affect you this semester, you are encouraged to discuss these with the Instructor. Although the details are up to you to disclose, the Instruction Staff will do their best to support and accommodate you in order to ensure that you can succeed this course while staying healthy.

Accessibility

Bryn Mawr College is committed to providing equal access to students with a documented disability. Students needing academic accommodations for a disability must first register with Access Services. Students can call 610-526-7516 to make an appointment with the Director of Access Services, Deb Alder, or email her at dalder@brynmawr.edu to begin this confidential process. Once registered, students should schedule an appointment with the professor as early in the semester as possible to share the verification form and make appropriate arrangements. Please note that accommodations are not retroactive and require advance notice to implement. More information can be obtained at the Access Services website.

For more information, please email Prof. Chris Murphy: cmurphy1@brynmawr.edu

Top