Software Engineering        EAC-RGB-W-S

Software engineers develop software applications while focusing on delivering quality software that meets the customers’ needs. In addition to developing software applications, software engineers select and track the processes that will be used throughout the development of an application. They apply statistical process control techniques to plan the project, estimate risk, and refine the process. Students studying software engineering complete a core of computer science courses to ensure they have solid software development skills. Specialized courses in the software engineering track include technical writing, formal methods, and statistics in addition to advanced computer science courses.

Our ABET-accredited Bachelor of Science in Software Engineering sacrifices some of the breadth of the BS in Computer Science to focus on what it takes to build really big software systems. When a system is too big for a couple of people to develop, two things become really important. First, we have to be careful how we design the internals of the system. Working code is no longer good enough. We need to design those internals so that different people can develop different aspects of the system while knowing that their parts will fit together when they are complete. We also need to be able to add functionality to the system. No big system has only one release - there is always something new it can do. Second, when a team is developing together, we need to understand team management and tools. We need to be able to plan who should work on what and when things will be complete, to track our progress against that plan, and to understand the tools that allow a lot of people to modify the system at the same time. So, our SE program has courses in the design of systems from small to very large (too large to fit on one machine) and in software process management. The capstone experience is a team development project on a large-scale system. Graduates of this program are sought after by companies and government agencies that develop software.

Software engineering graduates are sought by organizations that have rigorous demands on their software. This includes military applications and fault tolerant applications like airplane control systems. Also, large software development organizations employ software engineers to coordinate the activities of many software developers. This means that software engineers can work on anything from PC-based applications to large scale enterprise systems to real-time embedded control systems. Since they are well versed in computer science techniques, software engineers can work in any software development activity.

Shippensburg University offers the only Software Engineering program in the Pennsylvania State System of Higher Education.

Our ABET-accredited program is focused on the latest software engineering practices so our students graduate ready to work in agile software engineering teams in a wide variety of application areas. Our students work in our Agile Software Engineering lab, which is modeled after agile software development work places. Designed for collaboration, the lab contains pair programming stations, a design corner, an agile planning area and lots of whiteboard space. All of the furniture is on wheels, so the students can reconfigure it to maximize the workspace.

Our course work is focused on how teams work together to build large software systems. This means that we combine software design principles with the use of state-of-the-art software engineering tools. In our classes, our students design and build many systems from single player games to distributed file systems with servers placed all over the world. That variety of experiences helps prepare our students to be ready to hit the ground running when they are hired.

Our faculty have significant work experience and continue to consult for our industrial partners to keep theirs skills up-to-date. These activities are enriched by our BROADSIDE Center which allows us to put together teams of faculty and students to work on projects funded by industry. In addition, many of our students complete internships, in the summer or during the school year and many companies come looking for our interns every year. All of these activities allow faculty and our students to bring real-life experiences into the classroom.

The Software Engineering degree program and its concentrations are accredited by ABET, Inc., placing Shippensburg University among the approximately 22 accredited software engineering programs in America and only three such programs in Pennsylvania. For more information on ABET, visit ABET Information.

ABET accreditation means that the national accrediting organization has spent time on our campus making sure that our curriculum meets national standards, our faculty are well-supported and current in the discipline, and our infrastructure is up-to-date and well-supported. It is your assurance that, not only is our program strong today, but we have also laid the foundation so that it will continue to be strong in the future.

In addition to the University's General Education Requirements, Software Engineering students take courses spanning general engineering, computer engineering, computer science and software engineering.

Engineering Core

ENGR 100Engineering Seminar I
ENGR 200Engineering Seminar II
ENGR 300Engineering Seminar III
ENGR 120Programming for Engineers
ENGR 310Statistical Process Control
CSC 110Computer Science I - Lecture
CSC 106Computer Science I - Lab for non-majors
MAT 375Probability and Statistics for Engineers

Software Engineering

SWE 200Design Patterns
SWE 300Crafting Quality Code
SWE 310Software Metrics & Process Mgt
SWE 400Large Scale Architectures
SWE 415Interdisciplinary Development
SWE 420Extreme Programming

Electives

one CSC/CMPE or SWE Elective

Computer Science

CSC 310Design and Analysis of Algorithms
CSC 371Database Management Systems
CSC 431Computer Networks

Computer Engineering

CMPE 220Computer Organization
CMPE 320Operating Systems

Mathematics

MAT 211Calculus I
MAT 225Discrete Mathematics
MAT 318Elementary Linear Algebra

CMPE220 Computer Organization

Credits: 4
Description:  Introduces organization and architecture of computer systems from the standard von Neumann model to more recent architectural concepts. Internal structure and organization of a computer leads to significant differences in performance and functionality, giving rise to an extraordinary range of computing devices from hand-held computer to large-scale, high performance machines. To gain a better understanding of exactly how a computer functions, students will write programs in a common assembly language.

Prerequisites: CSC 111 for level with C or better or ELEC 100 with C or better) AND MAT 225 with C or better

CMPE320 Operating Systems

Credits: 4
Description:  An operating system provides an abstract interface with which programmers can control hardware. The study of this area includes both the use of operating systems (externals) and their design and implementation (internals). This course will include laboratories to simulate or experiment with operating system concepts. Topics include overview of operating systems, processes and concurrency, memory management, scheduling, input/output and file systems, system performance evaluation, ethics, and security.

Prerequisites: CMPE 220 with C or better

ENGR100 Engineering Seminar 1

Credits: 1
Description:  The goal of this course is to prepare the student for study in an engineering discipline.   This will include general skills for achieving success in college in addition to an introduction to the engineering disciplines and the engineering development process. 

ENGR120 Programming for Engineers

Credits: 3
Description:  An introduction to programming for electrical engineers. This course is a highly focused introduction to programming in C language. It covers the basics of programming including procedures, variables, types, loop, and control structures. The course introduces basic computing resources, and introduces algorithmic solutions to common engineering and numerical problems.

Prerequisites: Math placement 6

ENGR200 Engineering Seminar 2

Credits: 1
Description:  This course is focused on the tools that teams use to engineer solutions together.  Participation in a team project will help the students learn about and apply current team coordination tools for project management, configuration management, and personal improvement. 

ENGR300 Engineering Seminar 3

Credits: 1
Description:  The goal of this course is to prepare the student for upper class courses and entering the workplace.  Career preparation will include strategies for finding internships and full-time positions and preparing for the hiring process (building a resume, writing a cover letter, and interviewing).  Academic preparation will be focused on how to find and read journal publications on a given topic.

ENGR310 Statistical Process Control

Credits: 3
Description:  The course will develop the students’ understanding of statistical process control. A variety of control charts will be used for assessing process stability and estimation of process capability.  We will also study how engineers design experiments based on statistical quality control for the purpose of controlling, improving, and optimizing the engineering process.

Prerequisites: MAT 375 with C or better.

CSC106 Computer Science I Lab

Credits: 1
Description:  An introduction to computer programming from an object-oriented perspective. Students will complete several programs with an emphasis placed on good software engineering principles and development of good programming skills. Students will implement complete programs using an object-oriented programming language and development environment. Programming assignments will address the implementation and use of fundamental programming techniques including algorithm design, documentation, style, and debugging; fundamental program constructs including simple data types, and control structures; fundamental object oriented techniques including classes, abstraction, polymorphism, inheritance, and encapsulation; and fundamental software engineering principles.

Prerequisites: None

CSC110 Computer Science I

Credits: 3
Description:  An introduction to computer programming from an object-oriented perspective. Students will complete several programs with an emphasis placed on good software engineering principles and development of good programming skills. Students will implement complete programs using an object-oriented programming language and development environment. Topics include: fundamental programming techniques including algorithm design, documentation, style, and debugging; fundamental program constructs including simple data types, and control structures; fundamental object oriented techniques including classes, abstraction, polymorphism, inheritance, and encapsulation; and fundamental software engineering principles.

Prerequisites: Math placement level 4 or higher, concurrently enrolled in CSC106 or CSC107.

CSC310 Design and Analysis of Algorithms

Credits: 4
Description:  Examines various techniques for designing algorithms and analyzing their efficiencies, and examines and compares their efficiency of execution. Studies the theoretical foundations for analysis of algorithms and the ramifications of design strategies on efficiency.

Prerequisites: CSC 111 with C or better and MAT 225 with C or better

CSC371 Database Management Systems

Credits: 4
Description:  Detailed examination of theory and practical issues underlying the design, development, and use of a DBMS. Topics include characteristics of a well-designed database; high-level representation of an application using ER modeling; functional dependency theory, normalization, and their application toward a well-designed database; abstract query languages; query languages; concurrency; integrity; security. Advanced topics may be included (e.g., distributed databases; object-oriented databases). Theory to practice is applied in a number of projects involving the design, creation, and use of a database.

Prerequisites: SWE200 with C or better 

CSC431 Computer Networks

Credits: 4
Description:  Studies protocol suites, emphasizing the TCP/IP 4-layer model. Topics included are network addresses, sub netting, client/server network programming via the sockets API, network utilities, architecture of packets, routing, fragmentation, connection and termination, connection-less applications, data flow, and an examination of necessary protocols at the link layer, particularly Ethernet. Other topics may include FDDI, wireless, ATM, congestion control, and network security. 

Prerequisites: (CSC11 with C or better and CMPE320 with C or better) or GPRE level 1 

SWE200 Design Patterns

Credits: 4
Description:  Provides an advanced study of the concepts of object-oriented programming, with an emphasis on applying those concepts to software development. Many object design patters have emerged as proven ways to structure object-oriented solutions to a wide range of key problems. This course provides hands-on experience with using object design patterns to solve a number of problems that recur in computer science. Students will develop a number of medium to large programms individually.

Prerequisites: CSC 111 with C or better.

SWE300 Crafting Quality Code

Credits: 4
Description:  This course will explore the differences between code that works and good code. This will include: designing during development, characteristics of interfaces, naming conventions, defensive programming, selecting data types, organizing code, controlling loops, unusual control structures, table driven methods. Students will explore open source projects to practice evaluating the quality of code.

Prerequisites: CMPE 220 with C or better.

SWE400 Large Scale Architectures

Credits: 4
Description:  This course will cover the issues associated with enterprise size systems including: layered and tiered architectures, view patterns, input controller patterns, concurrency, session states, distribution strategies, domain logic patterns, object-relational patterns, web presentation patterns, and distribution patterns.

Prerequisites: SWE 200 with C or better and CSC 371 with C or better or GPRE Level 1.

SWE415 Interdisciplinary Development

Credits: 4
Description:  The course is focused on building a product for a non-engineering customer. The class will be paired with another course or activity on campus which will act as the customer. The students will work with that customer initially to define a product and then throughout the semester, they will revise that definition and use agile development techniques to deliver the product to the customer

Prerequisites: SWE 300 with C or better or CSC 371 with C or better or GPRE level 1.

SWE420 Extreme Programming

Credits: 4
Description:  The capstone experience of product development using agile development techniques. Topics include iteration planning, configuration management, communication tools, customer management, retrospectives and revising the development project. Students will work in teams to develop or enhance a product for a customer.

Prerequisites: SWE 300 with C or better 

Software engineering graduates are sought by organizations that have rigorous demands on their software. This includes military applications and fault tolerant applications like airplane control systems. Also, large software development organizations employ software engineers to coordinate the activities of many software developers. This means that software engineers can work on anything from PC-based applications to real-time embedded control systems. Since they are well-versed in computer science techniques, software engineers can work in any software development activity.

Most software engineers work within software development organizations. However, that doesn't mean they spend their days huddled in front of a computer. Developing software in a large organization requires that all developers work together. This means they must agree about what they are building, how they will build it, and how they will track their progress. Since these things differ from one project to the next, software engineers spend a good amount of time discussing and debating alternatives. In addition, large organizations require a wide variety of skills. In addition to software developers, they need managers, testers, marketers, and customer supporters. Software engineers can choose to provide one or more of these skills.

Typically, students who plan to study software engineering in college take four years of math in high school: algebra I and II, geometry and trigonometry. Advance Placement credit is available for those who were successful in computer science or calculus in high school. Students should have some experience with computers, but no programming experience, is required. Communication skills, both oral and written, are also critical for students entering the program.

The curriculum combines computer science, computer engineering and software engineering courses so our students understand programming, how the machines work and how to build large scale systems with agile development practices. In the software engineering courses, the students build increasingly large systems working on increasingly large teams. This builds not only their technical skills, but also their communication skill, their management skills, and their design skills.

Program Educational Objectives

The graduates of the Software Engineering Program will be prepared to achieve the following career objectives:

  • Satisfying work in a field of their choice (corporate or academic)
    • Have obtained a satisfying position
    • Have confidence in their ability to move to their next position of choice
  • Continue to be an effective and productive member of his/her workplace by applying the fundamentals taught in our program
    • Effective problem solving skills
    • Effective communication
    • Critical thinking
    • Sound business practices
    • Professional standards
    • Behaving in accordance with professional ethics
  • Remain a member of his/her larger community by
    • Participating actively in professional organizations
    • Using expertise through volunteering
  • Continue to learn and develop within his/her field of interest by participating in
    • Workshops/Training
    • Certifications
    • Graduate School
    • Self study
  • Expand breadth of scope and leadership role and advance toward one or more of the following career paths: technical, managerial, or business

Student Outcomes

Upon graduation, students will be able to demonstrate the ability to:

  1. Apply knowledge of mathematics, science, and engineering
  2. Design and conduct experiments, as well as to analyze and interpret data
  3. Design a system, component, or process to meet desired needs within realistic constraints such as economic, environmental, social, political, ethical, health and safety, manufacturability, and sustainability
  4. Function on multidisciplinary teams
  5. Identify, formulate, and solve engineering problems
  6. Understand professional and ethical responsibility
  7. Communicate effectively
  8. Obtain the broad education necessary to understand the impact of engineering solutions in a global, economic, environmental, and societal context
  9. Recognize the need for, and an ability to engage in life-long learning
  10. Gain knowledge of contemporary issues
  11. Use the techniques, skills, and modern engineering tools necessary for engineering practice.

Enrollment & Graduation Statistics for the Software Engineering Program

YEAR 2012-13 2013-14 2014-15 2015-16 2016-17 2017-2018
ENROLLED 2 36 49 62 57 66
GRADUATED 0 5 12 7 12

Note: Enrolled is the total number of students in the program - not the number of incoming students

The Mathematics and Computer Technologies Center is home to the Department of Computer Science and Engineering (CSE) and the university's Information and Computing Technologies Center (ICTC). The CSE and ICTC departments work together to provide state-of-the-art computing facilities for our students. 

The Software Engineering Lab where most of our software engineering courses are held is designed to be like an agile software development workplace. Pair programming stations, a design space, a planning space an lots of whiteboards support the rich collaboration that software engineering requires. All of the furniture is on wheels so the teams can rearrange to maximize their collaboration just like state-or-the-art facilities in industry.

The Programming Team is a unique student organization at Ship. Our team competes with other colleges and universities on the basis of members' ability to write correct programs as quickly as possible. The team consistently places well in the ACM regional contest. In recent years, the team has placed in the top twenty out of more than one hundred colleges and universities, beating teams like Princeton, University of Delaware, and University of Pennsylvania. In addition, they compete at Hackathons, in internet competitions like IEEExtreme (where we consistently place in the top 10%, and on HackerRank.com).

Women in Computer Science and Engineering  (WiCS-E) promotes an inclusive community within the department and provides a place for our female students to meet, share experiences, and build things. Our WiCS-E team built a computer controlled waterfall that they have exhibited at maker fairs and the US Science & Engineering Fair in Washington, D.C.