The Computer Science degree program is designed to introduce students to a wide range of problems and how to implement solutions to these problems as programs; it also provides a strong foundation for students who may wish to continue their studies in a graduate program. Graduates will be proficient in developing computer software to solve problems in a wide variety of contexts. The program leads to a Bachelor of Science in Computer Science. Our graduating students average in the top quarter of students who take the MFT exam. Furthermore, our program is ABET accredited, placing Shippensburg University among 30 Pennsylvania colleges and universities that have accredited ABET programs and one of 20 that include computer science programs. Refer to the ABET Accreditation and Program Objectives and Student Outcome links below for additional information about ABET.
The program consists of a number of required courses (see Required Courses and Electives below) and concentrations . Students will generally choose a concentration in their sophomore or junior year. Concentrations currently available are Computer Science Applications, Computer Graphics, and Related Discipline (see Computer Science Concentrations below). In addition, the department offers a selection of advanced topics from which students may choose electives (see Required Courses and Electives below).
All students will complete their studies with a capstone research project. This project, under the supervision of a faculty mentor, has the student apply his/her accumulated knowledge to a challenging problem in computer science. To see some of the more recent projects see Student Projects.
The department offers a wide variety of activities in which students may participate. We have an active programming team, game development club, and WICS-E (Women in Computer Science and Engineering) group, to name a few. Activities of these groups and others can be found at our Student Projects page.
Students who are unsure whether Computer Science is the avenue they wish to pursue for a career in computing technologies are encouraged to compare the related degree programs.
Software Engineering, which is concerned with the development and management of large software projects. This degree program is offered by the Department of Computer Science and Engineering, and results in a Bachelor of Science in Software Engineering. This program shares many of the core requirements of the Computer Science program listed above. Visit this program here.
Management Information Systems, which is concerned with computing in the business world. This degree program is offered by the Department of Management Information Systems in the College of Business, and results in a Bachelor of Science in Business Administration. Visit this program here.
The computer science program is designed to enable the student to gain knowledge of computer science and to apply this knowledge to an application area. Students will be proficient in developing computer software to solve problems in a number of contexts.
The computer science B.S. degree program and its concentrations are accredited by the Computing Accreditation Commission of ABET, http://www.abet.org , placing Shippensburg University among 30 Pennsylvania colleges and universities that have accredited ABET programs and one of 10 that include computer science programs.
Required Computer Science Classes
CSC 107 - Computer Science I Lab for Majors
CSC 110 - Computer Science I
CSC 111 - Computer Science II
CSC 310 - Design and Analysis of Algorithms
CSC 371 - Database Management Systems
CSC 498 - Computer Science Senior Research Methods
CSC 499 - Computer Science Senior Research and Development
Required Courses from Software Engineering
SWE 200 - Design Patterns
Required Courses from Computer Engineering
CMPE 220 - Computer Organization
CMPE 320 - Operating Systems
Required Courses from Mathematics
MAT 211 Calculus I
MAT 225 Discrete Mathematics
MAT 217 Statistics I
MAT 318 Elementary Linear Algebra
Available Upper Division Computer Science Courses
CSC 350 - Introduction to Computer Graphics
CSC 361 - Video Game Programming
CSC 403 - Machine Learning
CSC 431 - Computer Networks
CSC 434 - Web Programming
CSC 410 - Theoretical Foundations of Computer Science
CSC 451 - Computer Graphics Algorithms
CSC 462 - Artificial Intelligence
CSC 463 - Introduction to Robotics
Selected Topics Courses Offered Fall 2017
CSC 493 - Computer Vision
CSC 493 - Big Data
In addition to the required courses, students must complete one concentration
In addition to the core courses, students must complete the requirements of a concentration. Students may choose from pre-approved concentrations or seek department approval for a concentration of their own design. The decision to pursue a concentration is typically made during the sophomore year. Students desiring a broad background in computer science should select the Computer Science Application Concentration.
The pre-approved concentrations include:
- Computer Graphics, for the development of graphics-intensive software and games
- Computer Science Applications, for a broad background in computer science. This represents a general computer science degree with no specific area of concentration
Related Discipline, for those students who would like to combine computer science with another discipline such as business, science, etc.
Computer Science Applications
This is our broadest degree. Its goal is to give the student experiences across the discipline. The courses in this program cover everything from the organization of the hardware to high-level applications like graphics and artificial intelligence. Students in the program will get to take advanced electives in a wide range of topics instead of focusing on one particular area.
- The ability to solve difficult problems and implement solutions to those problems
- Experience working together as a team
- A good understanding of Machine Learning and its application to real world problems (e.g. data mining and clustering and classification)
- Understanding the different aspects of computer networks. Such as building network applications, routing, working with TCP/IP and UDP, as well as physical layer understanding.
- Will strengthen either C and/or Java programming skills
Computer Science Applications Concentration (20 crs.)
- CSC 350 Introduction to Computer Graphics
- CSC 403 Machine Learning
- CSC 431 Computer Networks
- CSC 410 Theoretical Foundations of Computer Science
- CSC 462 Artificial Intelligence
This is an interdisciplinary concentration that combines graphics courses in our department with courses from other disciplines that require intensive computer graphics software. The computer science courses focus on the graphics algorithms (things like: if there is a light source, how do I calculate where the shadows and reflections will be; how do we generate realistic fire; etc.) and the interdisciplinary courses focus on the application of these algorithms (such as professional art programs and geoinformation systems).
- The ability to solve difficult problems and implement solutions to those problems
- Experience working together as a team
- Learning aesthetic and graphic design principles within both a 2D and 3D environment.
- Understanding of the basic computer graphic algorithms (e.g. basic animation techniques, z-buffering, double buffering, raster manipulation, shading models, ray tracing, hidden surface removal, rasterization techniques, projection, transformations, etc.).
- Strengthens C and Java Programming Skills
Computer Graphics Concentration (19 - 20 crs.)
- CSC 350 Introduction to Computer Graphics
- CSC 451 Computer Graphics Algorithms
- CSC 360 Video Game Programming
- CSC/SWE/CMPE/EE elective
- Interdisciplinary Course: - Choose one:
- ART 217 Computer Design I
- GEO 202 GIS 1
- GEO 339 Remote Sensing
This concentration is designed for students who would like to combine computer science with another field of study. Computer science by its very nature is interdisciplinary, and virtually every discipline has incorporated computers - not just for word processing and spreadsheets - as an integral tool. The related discipline concentration provides the student with a strong foundation in computer science along with a working knowledge of another field, allowing him/her to be conversant with professionals in both areas, and the practical knowledge to write software in the adopted area of study with an insider's perspective. Faculty will advise students on course selection and help them develop skills appropriate for their chosen careers. Identified skills include:
- Finding solutions to difficult problems and implementing them in a programming language.
- Applying these problem solving and programming skills to problems in the chosen secondary domain.
- Interacting with professionals in the chosen domain to find solutions to problems.
- Working as a member of an interdisciplinary team.
Related Discipline Concentration
- 4 CSC/SWE Electives
- Major/Minor in other discipline
*No electives can overlap with your other major/minor
CMPE220 Computer Organization
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
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
CSC107 Computer Science I Lab
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.
CSC110 Computer Science I
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.
CSC111 Computer Science II
Description: Students will reinforce their proficiency with core programming techniques by developing more challenging programs than in CS1. Students will apply new techniques such as pointers, structures and unions to create advanced programs and solutions. Students will also need to improve their solutions to enhance efficiency and soundness. Topics include intermediate programming techniques; using advanced data types including multi-dimensional arrays, queues, stacks, linked lists, recursion , sorting and searching algorithms.
Prerequisites: CSC 110 with C or better.
CSC310 Design and Analysis of Algorithms
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
CSC350 Intro to Computer Graphics
Description: Provides a non-mathematical introduction to the basic concepts and techniques of computer graphics. Topics include real-world vs. synthetic image creation; graphics primitives; interaction and animation; I/O hardware environment; 3-D modeling and viewing; color, light, and shading; segments; textures; realistic effects. A typical graphics API (e.g., OpenGL) is used to create computer-generated images.
Prerequisites: CMPE220 with C or better
CSC361 Video Game Programming
Description: This course will look at the key concepts needed to build 2D and 3D video games using an existing game engine. The course will look at asset management, animation, collision detection physics, and user input. Additionally, It will look at some key design patterns related to game programming.
Prerequisites: SWE 200 with C or better.
CSC371 Database Management Systems
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
CSC403 Machine Learning
Description: This introductory course gives an overview of machine learning. This is a wide ranging field including topics such as: classification, linear regression, Principal Component Analysis (PCA), neural networks, bagging and boosting, support vector machines, hidden Markov models, Bayesian networks, Q-learning, reinforcement learning.
Prerequisites: MAT 217 with D or better and CSC 310 with D or better.
CSC410 Theoretical Foundations of Computer Science
Description: Topics include finite automata, regular languages, regular expressions, and regular grammars; pushdown automata and context-free languages; Turing machines; Church-Turing Thesis; the Halting Problem; undecidability; classes of languages, including the Chomsky hierarchy and the classes P, NP, and NP-Complete. Proof techniques for showing language (non)membership in a class.
Prerequisites: CSC 310 with D or better.
CSC431 Computer Networks
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
CSC434 Web Programming
Prerequisites: CSC371 with C or better, GPRE level 1.
CSC451 Computer Graphics Algorithms
Description: Explores the algorithmic foundations that underlie a typical computer graphics API. Topics include: normals; 2D and 3D transformation matrices; projection matrices; clipping; raster scan algorithms; fill algorithms; hidden line and surface algorithms; light, color, and shading algorithms; curve fitting; surface representation. Students will implement various aspects of a computer graphics API.
Prerequisites: CSC 350 with C or better, MAT 318 or MAT 329 with C or better, GPRE level 1.
CSC462 Artificial Intelligence
Description: Overview of artificial intelligence. Emphasis on basic tools of AI, search and knowledge representation, and their application to a variety of AI problems. Search methods include depth-first, breadth-first, and AI algorithms; knowledge representation schemes include propositional and predicate logics, semantic nets and frames, and scripts. Planning using a STRIPS-like planner will also be addressed. Areas that may be addressed include natural language processing, computer vision, robotics, expert systems, and machine learning.
Prerequisites: SWE 200 with C or better, GPRE level 1.
CSC463 Introduction to Robotics
Description: Introduces the science of robotics from the perspective of artificial intelligence. Emphasizes various robot control architectures and their implementations using mobile robots. Topics include history of robotics; hierarchical, reactive, and hybrid architectures; Braitenberg vehicles; integration and calibration of sensors; construction techniques and considerations; and implementation of various types of behaviors.
Prerequisites: CMPE 220 with C or better or GPRE level 1.
CSC498 Research Methods
Description: Students will learn basic research strategies including conducting literature reviews, designing experiments, defining hypotheses, and writing proposals. The course will include topics including finding and evaluating sources of information, defining topics, developing and supporting a hypotheses, and acceptable research and experimental practices. Students will develop a proposal for a research project to be completed in CSC 499. Graduate students are not allowed to take this course.
Prerequisites: CS Major with Junior Status and C or better in five computer science courses.
CSC499 Senior Research and Development
Description: Students will independently, but under the direction of the instructor of record, execute the proposal developed in CSC 498. Students will conduct the experiments outlined in their testing / implementation plan. Students will then analyze the results and determine if their hypothesis was supported or not. The goal of this course is to gain experience with a formal development process and understand how the scientific method, mathematical reasoning, logic, and algorithmic thinking will generate concrete answers to problems. Pre-requisite: Completion of CSC 498 with a C or better. Graduate students are not allowed to take this course
Prerequisites: CSC 498 with C or better.
SWE200 Design Patterns
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.
Career opportunities in software development have been and are predicted to be, very favorable. The work environment and income potential are highly attractive. Opportunities exist among all employers, especially business and industry, government, science, and education. And not everyone who completes this degree becomes a programmer. These skills are required in jobs like sales, technical support, and project management. Click to see companies who hire our students.
The computer science degree program and its concentrations are accredited by ABET, Inc. placing Shippensburg University among 46 Pennsylvania colleges and universities that have accredited ABET programs and one of 20 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.
The goal of our Bachelor Science program is to provide students with the skills necessary to succeed in the computer science profession. Our program combines practical experience with appropriate theory and the ability to specialize within the discipline.
Graduates of our program will be prepared to achieve the following objectives:
- Satisfying work in a field of their choice (corporate or academic)
a. Have obtained a satisfying position
b. 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 these fundamentals taught in our program
a. Effective problems solving skills
b. Effective communication
c. Critical thinking
d. Sound business practices
e. Professional standards
f. Behaving in accordance with professional ethics
- Remain a member of his/her larger community by
a. Participating actively in professional organizations
b. Using expertise through volunteering
- Continue to learn and develop within his/her field of interest (corporate or academic) by participating in
c. Graduate school
- Expand breadth of scope and leadership role and advance toward one or more of the following career paths: technical, managerial, or business.
Expected Student Outcomes
Upon completing our program, all of our students will be able to:
A) An ability to apply knowledge of computing and mathematics appropriate to the program's student outcomes and to the discipline.
B) An ability to analyze a problem, and identify and define the computing requirements appropriate to its solution.
C) An ability to design, implement, and evaluate a computer-based system, process, component, or program to meet desired needs.
D) An ability to function effectively on teams to accomplish a common goal.
E) An understanding of professional, ethical, legal, security, and social issues and responsibilities.
F) An ability to communicate effectively with a range of audiences.
G) An ability to analyze the local and global impact of computing on individuals, organizations, and society.
H) Recognition of the need for and an ability to engage in continuing professional development.
I) An ability to use current techniques, skills, and tools necessary for computing practice.
J) An ability to apply mathematical foundations, algorithmic principles, and computer science theory in the modeling and design of computer-based systems in a way that demonstrates comprehension of the tradeoffs involved in design choices.
K) An ability to apply design and development principles in the construction of software systems of varying complexity.
These objectives are support our program objectives as follows:
(Program Objective): (Expected Student Outcomes that relates to that Program Objective)
1a: E, F, G
1b: A, I
2a: A, B, J, K
2c: B, C, J, K
2d: E, G
2e: D, E
Enrollment & Graduation Statistics for the Computer Science Program
- Enrolled is the total number of students in the program - not the number of incoming students
- Many students who start as Computer Science majors graduate from our Software Engineering degree.
With careful planning, our advanced undergraduate students can complete our MS in Computer Science with only one additional year of study. The details of how this works depend on the interest areas of the student, but leveraging both degrees can give a graduate a combination of breadth and depth that employers will appreciate.