Computer Science
The Department of Computer Science offers a baccalaureate degree in computer science and also offers minors in computer science and data science.
The Bachelor of Science degree program in computer science is accredited by the Computing Accreditation Commission of ABET, www.abet.org. The Bachelor of Science degree program in computer science has been recognized as a high-quality degree program that meets national standards for computer science education. Our B.S. degree program in computer science was the first computer science program in a Pennsylvania State System University to be accredited by ABET. The B.S. degree program in computer science is designed to provide students with a fundamental background in computer science as well as allow students to study advanced topics such as artificial intelligence, security, game development, computer graphics, web development, data mining, algorithms, computer networks, large-scale data analytics and visualization, and parallel programming. Graduates are well prepared to pursue graduate study or a career in the computing field. Opportunities for student research are available.
For admission as a major in computer science, a student is expected to have a sound preparation in high school academic mathematics: algebra I and II, plane geometry, trigonometry and analytic geometry. Students who have completed an AP course in high school are encouraged to take the College Board Advanced Placement Computer Science A exam and have their scores sent to Millersville University for evaluation. University credit for freshman-level computer science major courses will be offered to students with grades of 3 or higher. For further information, see Advanced Placement Examinations in this catalog. Please note that a score of 3 or higher on the Computer Science Principles exam can be used for general University credit but will not replace any courses within the computer science major. The cooperative education program allows students to gain valuable experience in a full-time professional position related to their career goals, adding practical relevance to their program of study as well as financial remuneration. Students may elect one or more cooperative education experiences.
The cooperative education program allows students to gain valuable experience in a full-time professional position related to their career goals, adding practical relevance to their program of study as well as financial remuneration. Students may elect one or more cooperative education experiences.
Millersville University's Computer Science program consists of two components: required courses that every student must take and elective courses from which each student selects those most relevant to their interests and career goals. The required courses prepare students for an immediate career and for lifelong learning by providing a solid foundation of computer science principles. In particular, the required curriculum includes coverage of discrete mathematical structures, computer programming, data structures and algorithm analysis, computer architecture, programming languages, mathematical models of computation, database systems, design of operating systems, and contemporary software engineering practices. The electives cover a wide variety of important application areas and more advanced versions of the fundamental topics. Popular elective topics include artificial intelligence, computer graphics, computer networks, computer security, data mining, video game development, and web application development. Graduates of the Computer Science program are well qualified for careers such as software engineer/developer, web developer, systems analyst, data scientist, and system administrator, as well as for graduate studies in computer science and related fields.
Information about the degree programs offered by the Department of Computer Science can be found on the web at www.millersville.edu/computerscience.
the faculty
Hardy, Nazli; Associate Professor
College of Science and Technology
B.S., Clarkson University, 1996; M.B.A., Audrey Cohen Business School, 1998; Ph.D., City University of New York, 2004
Hogg, Chad; Assistant Professor
College of Science and Technology
B.S., Ursinus College, 2004; M.S., Lehigh University, 2007; Ph.D., Ibid., 2011
Schwartz, Stephanie; Professor
College of Science and Technology
B.S., Shippensburg University, 1991; M.S., University of Delaware, 1993; Ph.D., Ibid., 2006
Xie, Jingnan; Assistant Professor
College of Science and Technology
B.A., Shandong Agricultural University, 2011; Ph.D., SUNY at Albany, 2011
Zoppetti, Gary; Associate Professor
College of Science and Technology
B.S., California University of Pennsylvania, 1992; M.S., University of Delaware, 1997; Ph.D., Ibid., 2001
the courses
Designed to introduce concepts, techniques and history of computing to students who are not computer science majors. Emphasis on problem solving using the computer, including making calculations and presenting reports, tables and graphs based on those calculations. Collecting, storing, updating and retrieving data. Display and interpretation of information using the Internet. No credit toward computer science major.
Designed to introduce web programming to students who are not computer science majors. Topics include web-page design, scripting languages, graphics animation, image handling, event handling, document object model and graphical interface control objects. No credit toward computer science major. Offered periodically.
Discrete mathematical structures and their application to computer science including formal mathematical notation and proofs, algorithms, computer related arithmetic, propositional logic, predicate logic, set theory, graphs, relations and databases, functions, matrices and combinatorics. Prereq: Placement in MATH 151 or higher.
Introduction to computer programming for the student not intending to major in computer science or related fields. Emphasis on learning to develop programs in an appropriate programming language (currently Python) to manipulate and analyze data from domains such as science, business, engineering, and the humanities. Pre or Co-req: MATH 130 or MATH 234 or MATH 235 or MATH 333 or ECON 231 or GEOG 292 or CHEM 265 or BIOL 375. 4 s.h.
Continuation of CSCI 151 covering more advanced computer programming techniques with an emphasis on developing programs to manipulate and analyze real-world data from various domains including business, science, and the humanities. Topics include creating appropriate data visualizations, acquiring data from numerous sources, analyzing and cleaning data sets, drawing advanced conclusions from data and the ethics of data collection and analysis. Current language used is Python. Pre-req: C or higher in CSCI 151 or B or higher in CSCI 161 and C- or higher in MATH 130 or MATH 234 or MATH 235 or MATH 333 or ECON 231 or GEOG 292 or CHEM 265 or BIOL 375. 4 s.h.
Introduction to computer programming for the student intending to major in computer science or related fields. Emphasis on developing ability to apply problem-solving strategies to design and implement algorithms in a modern programming language. Prereq: Placement in MATH 151 or higher.
Continuation of CSCI 161 covering advanced computer programming techniques. Emphasis on object-oriented programming, specification, design, elementary data structures, and proper use of programming language and development tools. Abstract data types, classes and objects, recursion, linked lists, queues, stacks and binary trees. Prereq: C or higher in CSCI 161 or B or higher in CSCI 151.
Experimental
Experimental
Co-Op Ed Experience in CSCI
Introduction to the fundamental principles of programming language design, semantics, and implementation. Structure and vocabulary of modern programming languages. Programming language topics include formal semantics of programming, name binding, scope, data types, type systems, control flow, object orientation, scripting languages, functional languages, polymorphism, and concurrency. Labs and assignments will include experience in writing programs in a nonprocedural programming paradigm. Pre- or co-requisite: CSCI 362
Basic introduction to cognitive science. Reviews attempts to understand cognition using insights from psychology, artificial intelligence, philosophy, linguistics and the neurosciences. Examines the synthesis of those attempts in the emergent field of cognitive science. Offered periodically. Prereq: COMM 100, ENGL 110, junior status. No credit given if credit earned in PSYC/CSCI 314.
Introduction to building database-driven applications. Topics include data modeling, building databases, database queries, basic data management, Model View Controller design paradigm, basic database-driven application development, and non-relational database systems. Pre-req: C- or higher in CSCI 152 or 162 and CSCI 140 or MATH 120.
Theory and implementation of computer graphics. Explores each stage of the graphics pipeline through topics such as mathematical representations of positions and transformations, graphics primitives, 3D modeling, cameras, clipping, lighting, texturing, animation, and rasterization. Students build a graphics engine by iteratively replacing library code with their own work. Pre-req: MATH 304 and C- or higher in CSCI 362.
Experimental
Design and implementation of operating systems including types of operating systems, file systems, resource management, concurrent processes, deadlocks, memory management techniques, processor scheduling, disk scheduling, operating system security and system administration. Students expected to develop significant operating systems programming projects. Offered in fall, spring. Prereq: C- or higher in CSCI 362, 370.
Introduction to computer networks. Topics include network media, architecture and topology, protocols and layering, client-server models, Ethernet media and hardware, TCP/IP and other protocols, setup and system administration, application protocols and communication, network servers and services, security, data integrity, encryption, and firewalls. Offered periodically. Prereq: C- or higher in CSCI 362, ENGL 110.
Co-Op Ed Experience in CSCI
This course allows students and faculty to explore various topics in computer science that are not included in other course offerings. CSCI 406 may be taken more than once for cedit with departmental approval. Offered periodically. Prereq: depends on topic to be studied.
This course is designed to introduce students to topics which include attacks, standards, data integrity, symmetric key encryption, public key encryption, authentication, electronic mail security, IP security, Web security, database security, secure electronic transactions, network manage- ment security, malicious software and firewalls. Offered periodically. Prereq: C- or higher in CSCI 362.
This course will provide students with the skills necessary to design, develop, and deploy mobile device applications technology. Emphasis is placed on introducing students to the development environments, software and hardware limitations, and GUI development and event handling concepts when developing code to be executed on hand held devices. This course includes a laboratory component for example using Android/Java and IOS/iPhone/iPad Apps development environments. The successful student will learn the fundamental techniques for building mobile device apps including skills to write networked mobile apps that interact with remote services such as GPS, Bluetooth services, wireless hubs and devices, and web based client/server data systems. Pre-req: C- or higher in CSCI 362
Overview of software engineering concentrating on phases of the software development life cycle including agile software development processes, management, stories and features, specifications, architecture design (APIs, scalability, microservices), specification-based testing, coverage-based testing, and formal verification. Software management topics covered include source control, issue tracking, continuous integration, test automation, quality assurance, and code reviews. Pre-req: C- or higher in CSCI 330, 362 and 366
Introduction to building advanced web applications using modern approaches and technologies. Course covers development of responsive web applications using current industry-leading technology stacks and cloud-based services. Topics include asynchronous programming, an overview and use of cloud services, review of full stack technology, and development of real data-driven web applications. Pre-req: C- or higher in CSCI 362 and 366
Design, evaluation and implementation of interactive computing systems for human use including study of the major phenomena surrounding them. Presents a broad overview of the field with an emphasis on interface development and evaluation. Prereq: C- or higher in CSCI 362 required; CSCI 380 recommended.
Students implement a compiler for a simplified modern programming language. Theory of compiler construction, including finite-state automata, LL(1) grammars and top-down parsing. Project includes lexical and syntax analysis, name storage, scope and type analysis, error recovery and code generation. Advanced topics covered as time permits, including LR(k) grammars, bottom-up parsing, compiler generators (e.g., LEX and YACC) and code optimization. Offered periodically. Prereq: C- or higher in CSCI 330, 340, 362.
Introduction to artificial intelligence including problem solving, search, heuristic methods, machine learning, knowledge representation, natural language processing, computer vision, expert systems, theorem proving and current applications. Concepts illustrated through programs developed in LISP or Prolog. Offered periodically. Prereq: C- or higher in CSCI 362 and ENGL 110.
An introduction to data mining, including data cleaning, the application of statistical and machine learning techniques to discover patterns in data, and the analysis of the quality and meaning of results. Machine learning topics may include algorithms for discovering association rules, classification, prediction, and clustering. Lab assignments provide practice applying specific techniques and analyzing results. An independent project provides students with the opportunity to guide a project from data selection and cleaning through to presentation of results. Pre-req: C- or higher in CSCI 366 and MATH 235 or 333 or 335.
A practical introduction to data analytics, visualization, and blending theory. Students will learn about and apply various clustering algorithms and techniques for dealing with noisy data, use a distributed data analytics framework, complete laboratory assignments using version control, and enforce reproducibility by having all science easily sharable. Students will become familiar with modern data analytics methods and explore real-world data sets. Visualization of results will be a large component of the course through interactive and static frameworks. Pre-req: C- or higher in CSCI 366 and MATH 235 or 333 or 335.
Intelligent robotic systems that deal with the physical world through visual, acoustic or tactile sensing. Fundamentals of robot vision, including image acquisition and camera geometry, pattern recognition, representation and analysis of shape, pixel neighborhoods, connectivity, distance measures, arithmetic operations on pixels and images, computations of area, centroid, moments, axis of least inertia, correlation techniques, histogram computation, manipulation of robot end effectors, robot task coordination and simple Cartesian robot manipulation. C- or higher in CSCI 362.
Theory and techniques of algorithm design and analysis. For design, students will study a variety of algorithmic solutions to problems from application areas including searching, selecting, sorting, graph theory, number theory and encryption. Design paradigms, including greedy method, divide and conquer, dynamic programming, backtracking and branch-and-bound. For analysis, students will use formal techniques to classify execution time of an algorithm. Software tools are used to measure resources used by a program during execution. Offered infrequently. Prereq: C- or higher in CSCI 340.
Provide students with skills and solid technical foundation necessary to design, develop and deploy 3D games and related entertainment technology applications. Topics include 3D game programming, 3D graphics, game design, programming video game controllers, collision detection, force and motion calculations, networking multiplayer games, manipulating sound objects, physical modeling, projectiles, particle systems, physical constraints, deformation of virtual 3D objects, surface deformation, computer animation, forward and inverse kinematics, keyframe motion capture and procedural animation, and behavior-based animation and control. Offered periodically. Prereq: C- or higher in CSCI 362.
Overview of parallel computing through study of parallel programming. Topics include message-passing, highly parallel computations, partitioning and divide-and-conquer strategies, pipelined and synchronous computations, load balancing and termination detection, programming with shared memory systems, parallel sorting algorithms, numerical algorithms, image processing, searching and optimization, and parallel programming using current technology. Offered periodically. Prereq: C- or higher in CSCI 362, 370.
Experimental
Honors Course
Independent study is available for well-qualified students. Students who receive approval for independent study are expected to complete a significant study or project in some area of computer science. A written report is required. Prereq: departmental permission.
Departmental Honors