CIS 350

Software Design & Engineering

Spring 2019

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, strengthen your sense of belonging in the field, and empower you to address some of the challenges facing the modern software development industry, including diversity & inclusion issues, as well as understanding the social impact of software.

After completing this course, you will be able to:

  • Apply best-practice principles and patterns to design and implement 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
  • Address some of the cultural and social concerns within the current software industry
  • Work in a group to develop a complex software system

Students in this course are expected to have completed CIS 121 and be proficient in Java. Students who have completed CIS 120 and plan on taking CIS 121 concurrently with this course should add themselves to the course waitlist and may be admitted to the course with the instructor's permission if space permits.

Course Topics

Lectures will be held Tues/Thurs from 1:30-3pm and will cover the following topics:

  • 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
    • 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

There is no textbook for the course, but most lectures will be supported by suggested readings that will be made available to registered students.

Additional reading assignments will also cover various aspects of the "State of the Software Industry," and are likely to include:

  • Issues faced in industry by:
    • Women
    • People of color
    • Members of the LGBT community
    • People with disabilities
  • Mental health issues in the tech community
  • The pros and cons of Open Source Software
  • ACM Code of Ethics
  • Designing for accessibility
  • Bias in ML algorithms

Course grades will be determined by a combination of homework assignments, exams, a semester-long group project, and in-class activities. Details will be made available to registered students via the syllabus in Canvas.

Belonging, Inclusion, and Wellness

Beyond the technical content described above, a goal of this course is to prepare students for a career as a software engineer by giving them a sense of belonging within the field.

This can only happen if all members of the course community – the instructor, TAs, and students – work together to create a supportive, inclusive environment that welcomes all students, regardless of their race, ethnicity, gender identity, sexuality, or socioeconomic status. Diversity, inclusion, and belonging are all core values of this course. All participants in this course deserve to and should expect to be treated with respect by other members of the community.

A code of conduct that covers behavior in lecture, office hours, and online will be distributed to registered students via Canvas. Additionally, the course syllabus in Canvas will list available resources – including designated members of the instruction staff – for reporting violations of the code of conduct and for getting support if you witness or are affected by a violation.

A sense of belonging can also affect students’ mental health and wellness, which is of utmost importance to the course instruction staff, if not the University 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 CAPS: 215-898-7021; 3624 Market St. If you are uncomfortable reaching out to CAPS, any member of the instruction staff will be happy to contact them on your behalf.

Instruction Staff

Chris Murphy photo


Prof. Chris Murphy
Instructor
he/him/his
cdmurphy@seas

 

Diana Marsala photo


Diana Marsala
Head TA
she/her/hers
marsalad@sas

Anya Mushakevich photo


Anya Mushakevich
TA for Diversity & Inclusion
she/her/hers
mushanya@sas

Katherine Hsu photo


Katherine Hsu
TA for Wellness
she/her/hers
kathsu@seas

Delender McCants photo


Delender McCants
he/him/his
dmccants@seas

Dylan Zuniga photo


Dylan Zuniga
he/him/his
dzu@sas

Evelyn Bailey photo


Evelyn Bailey
she/her/hers
ebail@seas

Pranav Kalicheti photo


Pranav Kalicheti
he/him/his
pkali@seas

 

Sang Lee photo


Sang Lee
she or they pronouns
eunsang@sas

Saniyah Shaikh photo


Saniyah Shaikh
she/her/hers
saniyah@seas

Sarah Rittgers photo


Sarah Rittgers
she/her/hers
rittgers@seas

 

Seyoung An photo


Seyoung An
she/her/hers
seyan@seas

Tamara Balderas photo


Tamara Balderas
she/her/hers
btamara@sas

Yvonne Li photo


Yifang (Yvonne) Li
she/her/hers
liyifang@seas

 

Yuan Kong photo


Yuan Kong
he/him/his
yuankong@sas

For more information, please email Prof. Chris Murphy: cdmurphy@seas.upenn.edu

Top