Computer Engineering
Computer Engineering is a branch of engineering that combines software and electrical engineering to develop computer systems and the hardware and software that support them. Computer engineers are involved in the hardware development process, designing and building hardware systems; and they are involved in the software process, designing and building the operating systems and applications programs for those systems.
Students in our ABET-accredited Bachelor of Science in Computer Engineering program will learn about computer architectures, operating systems, computer security, and network engineering. Students can choose to study more advanced topics such as: computer architectures and high-performance computing; VLSI and FPGA systems; embedded systems and electronic design; or software engineering. These skills are vital for today’s pervasive computing environment, where we are literally surrounded by networked computing systems.
Graduates of this program will be well prepared for a wide variety of tasks including systems and network engineers, security engineer, full-stack developer and DevOps, embedded software engineers, electronics engineers. These positions are in high demand across our region and the country.
Engineering Versus Engineering Technology Degrees
Engineering programs present a focus on engineering theory and design, supported through advanced science and higher-level mathematics through advanced calculus and differential equations. Engineering Technology programs typically focus on applied sciences and mathematics such as algebra and applied calculus. Graduates of an engineering program may be called engineers; graduates of a four-year engineering technology program are called engineering technologists. Graduates of an engineering program are prepared to continue on to advanced study at the master’s or doctoral level. Graduates of an engineering program may work to earn the professional engineer license; whereas the National Society of Professional Engineers opposes acceptance of engineering technology. ABET provides a good summary that describes the differences.
Our program was designed to meet a number of competing goals. The first was to create a strong academic program that meets national academic requirements while keeping a core of the liberal-arts general education program to create a well-rounded engineer. The second was to create an accessible, affordable program for the Commonwealth. The program requires 120 credits and can be completed in four years. The program was also designed to create paths for students to complete coursework at the Commonwealth's community colleges and other PASSHE schools and transfer into Shippensburg University to complete the program.
The Computer Engineering degree is based on existing highly respected programs in computer science, mathematics and physics. These programs are well known for their student-centered focus, our graduates are well-prepared for a variety of careers. The ability for Ship faculty to focus on developing individual students' potential is even more important for a demanding engineering program.
Another reason to consider Shippensburg University is flexibility. The Computer Engineering program is only one of five engineering programs in the School of Engineering, and part of a broader continuum of programs, including degree programs in: electrical, software, mechanical, and civil engineering, mathematics, applied mathematics, computer science, applied physics, and physics. Students who enter into one of these STEM programs have the flexibility to change majors between these programs with relative ease. This can be important as student's goals change.
The Computer Engineering degree program is accredited by the Engineering Accreditation Commission of ABET, https://www.abet.org, placing Shippensburg University among 46 Pennsylvania colleges and universities that have ABET-accredited programs and one of 13 that include computer science programs. 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.
Computer engineers possess hardware and software development skills that will enable them to work in any aspect of the computing life cycle. They have training in a broad range of computer science, software engineering, mathematics, physics, and basic science to enable them to participate in a wide range of the product development life cycle. They may work with electrical engineers in a team developing new hardware; or with systems programmers in developing device drivers and operating systems interfaces; or they may work with software engineers to develop the high level applications that run on the device.
The Economic Development and Employer Planning System provides long-term supply and demand data for a wide variety of careers. Nationally, they report an average of 15,340 open positions per year. Regionally, they report an average of over 300 open positions per year for Pennsylvania and nearly 2,800 for the surrounding region (PA, MD, NJ, VA). They forecast demand to far exceed the available workforce.
The program at Ship will provide sufficient skills for students to pursue their careers as computer engineers; or they may easily transition into any of the careers followed by computer science generalists. Additionally, students will be well qualified for further study in a post-baccalaureate program.
Program Objectives
Graduates of the Computer 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
The expected outcomes of this program give students the ability to:
- an ability to identify, formulate, and solve complex engineering problems by applying principles of engineering, science, and mathematics
- an ability to apply engineering design to produce solutions that meet specified needs with consideration of public health, safety, and welfare, as well as global, cultural, social, environmental, and economic factors
- an ability to communicate effectively with a range of audiences
- an ability to recognize ethical and professional responsibilities in engineering situations and make informed judgments, which must consider the impact of engineering solutions in global, economic, environmental, and societal contexts
- an ability to function effectively on a team whose members together provide leadership, create a collaborative and inclusive environment, establish goals, plan tasks, and meet objectives
- an ability to develop and conduct appropriate experimentation, analyze and interpret data, and use engineering judgment to draw conclusions
- an ability to acquire and apply new knowledge as needed, using appropriate learning strategies.
Enrollment & Graduation Statistics for the Computer Engineering Program
YEAR |
2011/12
|
2012/13
|
2013/14
|
2014/15
|
2015/16
|
2016/17
|
2017/18
|
2018/19
|
2019/20
|
2020/21
|
2021/22
|
ENROLLED |
17
|
37
|
57
|
62
|
49
|
28
|
36
|
33
|
37
|
34
|
36
|
GRADUATED |
0
|
0
|
1
|
2
|
7
|
5
|
9
|
2 | 5 | 2 |
Note: Enrolled is the total number of students in the program - not the number of incoming students
Computer Engineering Requirements
Degree requires 120 credit hours
Core Courses
CMPE210 | Network Engineering (3 cr) |
CMPE220 | Computer Organization (4 cr) |
CMPE320 | Operating Systems (4 cr) |
CMPE330 | Computer Security (3 cr) |
CMPE499 | Engineering Development (2 cr) |
ELEC220 | Linear Circuit Analysis (4 cr) |
SWE101 | Intro. to Java (1 cr) |
SWE300 | Crafting Quality Code (4 cr) |
Tracks
Students select two of the four tracks:
Systems Track CMPE310 - Computer Systems Engr CMPE411 - OS Design & Development |
Architectures Track CMPE330 - Advanced Architectures CMPE420 - Digital & Reconfigurable Computing |
Electronics Track CMPE322 - Microcontrollers ELEC423 - Electronic Design & Processes |
Software Engineering Track |
Electives
CMPE students have two electives from CMPE, ELEC, SWE, and ENGR courses. Students are encouraged to take an internship as one of their electives.
Engineering Core Courses
ENGR100, ENGR200, ENGR300 - Seminars I, II, and III
ENGR110 - Modeling (3 cr)
ENGR120 - Programming for Engineer s (3 cr)
ENGR310 - Statistical Process Control (3 cr)
MAT375 - Prob & Stat for Engineers
Math & Science Requirements
All CMPE students will earn the math minor.
MAT211 - Calculus 1 (4 cr)
MAT212 - Calculus 2 (4 cr)
MAT225 - Discrete Math (4 cr)
MAT322 - Differential Equations (3 cr)
Math elective, choose one of:
MAT213 - Calc III, MAT219 - Data Analysis, MAT318 - Linear Algebra, MAT326 - Math Modeling, MAT410 - Abstract Algebra, or MAT421 - Number Theory and Cryptography
Entrance Requirements: Students must be ready to place into MAT211 - Calculus 1 (or higher) to begin the Computer Engineering program. Students who do not meet this requirement will be admitted into the Computer Science & Engineering General Program while they improve their math placement. As soon as they meet the Calc 1 requirement, they will be accepted into the Computer Engineering program.
CMPE210 Network Engineering
Credits: 3
Description: An introduction to network architectures and engineering. Topics will include network physical media, protocols, software interfaces, routing devices, performance, reliability, and security. Students completing this course will be able to design, build, test, and improve computer networks to meet a variety of goals including cost, reliability, throughput, latency, and security.
CMPE220 Computer Organization
Credits: 4
Description: An introduction into the organization and architecture of CPU, memory, and I/O devices, and the interaction between software and hardware. Topics include assembly language programming, Von Neumann architecture, representing data and instructions in memory, integer and floating point arithmetic in hardware, pipelining, memory systems, caching, the I/O system, and performance analysis. At the end of this course students will be able to write simple and complex programs in Assembly language, convert between C and Assembly, assess performance of a program on a machine, and understand how modern processors achieve multiple instructions per cycle.
CMPE230 Computer Security
Credits: 3
Description: An introduction to computer security. Topics will include: access controls, encryption, malicious software, denial of service attacks, intrusion detection, buffer overflow attacks, trusted computing, social engineering, physical security, and penetration testing. Students completing this course will be able to identify different types of cyber- and physical- attacks and the standard methods to prevent, detect, and defend against them.
CMPE310 Computer Systems Engineering
Credits: 3
Description: An introduction to computer systems engineering, with an emphasis on systems administration, computer system design, analysis, and testing. Students who complete this course will design, configure, and build computer systems to meet a set goals such as performance, reliability, or cost; and then install, configure, and manage a variety of UNIX and Windows operating systems and critical services.
CMPE320 Operating Systems
Credits: 4
Description: A study of operating systems concepts and interfaces, with a special emphasis throughout the course on the concept of abstraction and separating mechanism from policy as a design technique. Topics include UNIX shells and common commands, writing shell scripts, important system calls, performance benchmarking, OS impact on program design and performance, processes, multiprogramming, multiprocessing, threading, scheduling, process isolation, inter-process communication, mutual exclusion, deadlock detection and avoidance, file system design, permissions and protections, and RAID. At the end of the course, students will be able to describe the importance of abstraction as a design pattern, and use it to explain the organization of OS components, interact with the UNIX shell and write shell scripts, and write programs using important system interfaces, understand the performance impact of making system calls, and independently find sources to guide their future development.
CMPE322 Microcontrollers & Interfaces
Credits: 4
Description: An introduction to microcontroller programming and interfacing. Topics include: architecture of microcontrollers, mechanics of mapping voltages to logic signals, building a proper device abstraction layer, writing quality code, compliance with MISRA-C and other standards, GPIO, interrupts, timers, I2C, SPI, RS232, controller motors and servos, analog to digital conversion, displays, speakers, microphones, acting as a USB device, and designing complete embedded systems involving microcontrollers. By the end of the course, students will be able to design, build, test, and verify solutions involving microcontrollers. Students should have a basic understanding of circuits, voltage, current, resistors, and capacitors.
CMPE330 Advanced Computer Architectures
Credits: 3
Description: An advanced continuation of computer organization, this class will cover topics including Intel assembly language, high-performance computing with GPGPU/CUDA and OpenCL, an introduction to distributed processor systems and super-computers using MPI, and emerging architectures such as quantum computing.
CMPE411 OS Design and Implementation
Credits: 4
Description: This course explores the design and implementation of operating systems. Topics include designing interfaces between hardware and applications systems, creating layers of abstractions to extend lower-level services, bringing a CPU from POST to regular operation, development of device drivers and other services within the kernel, context switching, interrupt handling, building character and block drivers, deferred operations, memory mapping and DMA arbitration. By the end of the course, students will have written a primitive operating system, understand the device abstraction layer and how to integrate a device into it, and built device drivers for Linux and Windows
CMPE420 Digital and Reconfigurable Computing
Credits: 4
Description: An introduction to high-speed and reconfigurable computation using FPGAs. Topics include behavioral HDL modeling, simulation, and testing; developing peripherals to interface to a variety of devices such as RS232 and I2C; developing computational elements to off-load computing tasks from the CPU; direct memory access (DMA) and bus-mastering; generating and handling interrupts; mixed PS-PL interactions; prototyping circuits in an FPGA; and converting a design to a VLSI ASIC.
CMPE499 Engineering Design and Development
Credits: 2
Description: This is the integrated engineering capstone course that is shared between computer, electrical, and mechanical engineering students. Students will work together in teams to build requirements, design, build, and test an electro-mechanical component or system. Project topics vary every semester, although there is usually an external customer that will work with the students. The instructor of record for the course serves as the project manager, assessing the individual and team performance, and students will be assessed on their ability to act as a professional working in the field. The course meets for 2 credit hours per week reflecting the amount of time the students will meet as one collective group with the faculty, but students should expect to work substantially more hours with their team, outside of class. Graduate students are not permitted to take this course.
ELEC220 Linear Circuit Analysis
Credits: 4
Description: An introduction to electric circuit analysis techniques, including DC and AC circuit analysis techniques. Students will learn Volt-ampere characteristics for circuit elements. Students will analyze circuits with independent and dependent sources. The course will also introduce Kirchoff's laws for voltage and current, Thevenin's and Norton's theorems. The course will also introduce transient response of resistor-capacitor (RC), resistor-inductor (RL), and resistor-inductor-capacitor (RLC) circuits. Students will also analyze signals at frequency to examine sinusoidal steady-state and impedance and to study both instantaneous and average power. Finally, students will use PSPICE to model the ideal behavior of these systems.
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.
ENGR110 Modeling and Simulation
Credits: 3
Description: An introduction to modeling physical systems and simulating them using scientific computation software. Topics will include modeling dynamic systems, the basic mathematics of modeling physical systems, including difference equations, arithmetic and geometric series, spring-damper systems, open- and closed- loop systems. To support these topics, students will learn to use the MATLAB and Simulink systems, including basic expression evaluation, scalar, vector, and multi-dimensional variables, conditionals, repetition, and writing basic functions.
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.
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.
SWE101 Intro to Java
Credits: 1
Description: This course is designed to introduce the Java programming language to students who have learned other languages, such as C, C++, or Python. Students completing this course will learn about the Java language, the virtual machine, object oriented programming techniques, and test-driven development. Students who have taken SWE100 cannot take this course for credit.
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 patterns 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 programs individually.
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.
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
The School of Engineering maintains a large array of dedicated facilities, including 24-hour computer labs, high-performance computers, and a dedicated infrastructure to support all of our programs. The Computer Engineering program also has a circuit board fabrication lab, electronics testing and debugging lab, and wired and wireless networking lab. Students have access to the latest development tools, including advanced FPGA, SoCs, microcontrollers, and other embedded systems; as well as advanced CAD tools that have an equivalent value of more than $20 million dollars. For more details, see the School of Engineering's facilities page.