Skip 
to main content.
College of Arts and Sciences Catalog

COMPUTER SCIENCE

Department of Computer Science


Karen Anewalt, Chair

Ron Zacharski, Career Advisor

Jennifer Polack-Wahl, Graduate School Advisor

Faculty

Professor

Ernest C. Ackermann

Associate Professors

Karen Anewalt
Jennifer Polack-Wahl
Marsha F. Zaidman

Assistant Professors

Stephen Davies
Ron Zacharski

The Computer Science Program

Computer Science provides the kind of dynamic, interactive work environment few fields can match. Software developers and analysts invariably work in teams to tackle cutting-edge projects. We join forces with scientists, doctors, military commanders, social psychologists, and others to produce solutions that are bigger than the sum of their parts. We enjoy the satisfaction of working with our peers to make a common vision become reality.

Computer software is probably the most malleable medium invented for human artistry. Unlike the gadgets of the industrial revolution, which were hardwired to a single purpose, computer software essentially mimics the fluidity of the human mind, making it extensible in any direction the author sees fit. Because of this, in Computer Science, we don’t just study what “is,” but we define what is. Our goal is to invent, create, and solve problems in exciting new ways.

We offer two choices for students majoring in Computer Science: the traditional program and the computer information systems concentration. Each is tailor-made for a challenging and practical course of study and paves the way for a dynamic career path and advanced study in the major. Students have opportunities for individual study, undergraduate research, and internships at technical firms, government offices, or software development agencies.

An accelerated Masters of Science in Management Information Systems (MSMIS) is also available to students. This program enables Computer Science majors to earn up to twelve dual-degree credits during their senior year. These courses may then be applied to completion of the MSMIS degree program available from the College of Graduate and Professional Studies at the University of Mary Washington.

The academic and research programs in Computer Science are supported by a network of computer systems that employ Solaris, Linux, and Windows operating systems. Students who complete either of the undergraduate programs in Computer Science are well prepared for a variety of entry-level positions and for continued academic work in graduate school.

Computer Science Major Requirements

Students who major in Computer Science may choose from two concentrations: the Computer Science major, or the Computer Information Systems Concentration in Computer Science.

1. The Computer Science Major.

Students study the classic discipline of Computer Science, with emphasis on the theoretical foundation and practical applications of computers and computer software. Courses explore such subjects as system architecture, object-oriented design, and computational theory, in addition to the rich mathematical underpinnings that support these topics. Graduates are well-equipped to solve problems in a broad spectrum of application areas and begin satisfying careers as software engineers, system architects, or application developers.

Computer Science: Traditional Track 39 credits as follows:

A. The following required courses:
Computer Science 220: Computer Science I
Computer Science 230: Computer Science II
Computer Science 305: Computer Systems and Architecture
Computer Science 326: Theoretical Foundations of Computing
Computer Science 330: Object-oriented Analysis and Design
Computer Science 350: Applications of Databases
Computer Science 401: Organization of Programming Languages (or MSCS 501)
Computer Science 405: Operating Systems (or MSCS 505)

B. One course chosen from
Mathematics 300: Linear Algebra
Mathematics 312: Differential Equations
Mathematics 351: Numerical Analysis

C. One course chosen from
Computer Science 430: Software Engineering (or MSCS 530)
Computer Science 491 (3 credits): Individual Study in Computer Science (or MSCS 591)
Computer Science 499 (3 credits): Internship

D. One course, minimum three credits, in Computer Science numbered 400 or higher (except CPSC 499), any approved MSMIS
course, or any approved MSCS course, that was not used to satisfy any of the preceding requirements. CPSC 491, or MSCS 591 fulfill
this requirement if said course is at least three credits.

E. One course, minimum three credits, in Computer Science or Mathematics numbered 300 or higher, any approved MSMIS course, or any approved MSCS course, that was not used to satisfy any of the preceding requirements. CPSC 391, 491, 499, or MSCS 591 fulfill this requirement if said course is at least three credits. Note that Mathematics 122 (Calculus II) is a prerequisite for Computer Science 326, Theoretical Foundations of Computing, and should be taken before the junior year. Also, note that Computer Science 125, Introduction to Discrete Mathematics, is a prerequisite for Computer Science 305, Computer Systems and Architecture, and 326, Theoretical Foundations of Computing, and should be taken before the junior year.

2. The Computer Information Systems Concentration in Computer Science.

This combines the foundations of Computer Science with an applied approach to application development and computing in a business environment. It offers our students an avenue to consider the use of computing as it applies to problems in business and related fields. Together with courses in economics, decision support, and accounting, this alternative focuses on how technology applies in an organizational setting. Graduates are wellpositioned for careers as software developers, systems analysts, network and systems administrators, project leaders, database administrators, or business analysts.

Computer Science: CIS Track 39 credits as follows:

A. The following required courses:
Computer Science 220: Computer Science I
Computer Science 230: Computer Science II
Computer Science 310: Computer Information Systems
Computer Science 330: Object-oriented Analysis and Design
Computer Science 350: Applications of Databases
Business Administration 132: Principles of Accounting II
Business Administration 353: Decision Analysis
Economics 200 or higher

B. One course chosen from Computer Science 414: Network Principles and Applications (or MSCS 514)
Computer Science 448: Advanced Web Application Development (or MSCS 548)

C. One course chosen from
Computer Science 430: Software Engineering (or MSCS 530)
Computer Science 491 (3 credits): Individual Study in Computer Science (or MSCS 591)
Computer Science 499 (3 credits): Internship

D. One course, minimum three credits, in Computer Science numbered 400 or higher (except CPSC 499), any approved MSMIS
course, or any approved MSCS course, that was not used to satisfy any of the preceding requirements. CPSC 491 or MSCS 591 fulfill this requirement if said course is at least three credits.

E. One course, minimum three credits, in Computer Science, Business Administration or Mathematics numbered 300 or higher, any approved MSMIS course, or any approved MSCS course, that was not used to satisfy any of the preceding requirements. CPSC 391, 491, 499, or MSCS 591 fulfill this requirement if said course is at least three credits. Note that Computer Science 125, Introduction to Discrete Mathematics, is a prerequisite to Computer Science 414 and MSCS 514 and should be taken before the junior year. Business Administration 131, Principles of Accounting, is a prerequisite for Business Administration 132. Mathematics 200, Introduction to Statistics, is a prerequisite to Business Administration 353.

Computer Science Course Offerings

 

103 – Computing in the 21st Century (3)

Introduction to the organization and use of computers. Students will become aware of professional, social, and ethical issues in Computer Science. Includes discussion of the issues concerning the widespread application of computing in current society. Topics covered are drawn from areas such as computers and security, computers and privacy, computer ethics and intellectual property rights, health, access and the environment, and emerging technologies.

104 – The Internet: Technology, Information, and Issues (3)

A survey of the technology and issues underlying the use of the Internet for communication, resource discovery, research, and dissemination of information in multimedia formats. Topics include an introduction to Internet protocols, Internet history and development, electronic mail, use and functions of a Web browser, accessing Internet services and resources, using the Internet for research, Web site design and implementation, and social, legal, and ethical issues related to using the Internet.

105 – Problem-solving with Databases (3)

Introduces relational databases as a common problem-solving tool for business, scientific, and personal applications. Covers issues of information representation, abstraction, redundancy and inconsistency. Introduces database schema design based on the relational model, including semantic modeling, integrity constraints, and language-based queries. Students build sample database solutions based on real-world problem domains.

106 – Digital Storytelling (3)

People have been telling stories since the beginning of time, but how is storytelling evolving in the digital age? This course explores how computers are being used to tell stories. We’ll study text-based technologies – blogging, the web – and how those models have changed the way we publish and disseminate narratives. We’ll also study the roles of audio, video, and images in narrative: computer animation, the ethics of altering digital images, and the Story Corps project. Students will use technology including blogs, virtual worlds, and computer games to create and tell their own stories. No previous computer experience is necessary.

110 – Introduction to Computer Science (3)

This course provides a foundation in computer science for a student who does not have prior programming experience. It provides sufficient support to permit a student to continue in the major program. Topics include an introduction to the algorithm and program development process using a high-level structured programming language and the department’s computing facilities. Supervised hands-on experience provided. An online diagnostic test is available to assist interested students with course level selection. Students who wish to take this online test should send an e-mail request to cpscdept@umw.edu. May not be taken for graded credit after passing any Computer Science course numbered 220 or higher.

125 – Introduction to Discrete Mathematics (3)

Designed to prepare beginning Computer Science majors for advanced study by emphasizing the components of Discrete Mathematics especially related to Computer Science. An introduction to topics which may include number systems, logic, methods of proof, counting techniques, mathematical induction, sets, relations, functions, matrices, graphs and trees.

220 – Computer Science I (4)

Prerequisite: Computer Science 110 or permission of instructor. An online diagnostic test is available to assist interested students with course level selection. Students who wish to take this online test should send an e-mail request to cpscdept@umw.edu.

Continued coverage of disciplined problem-solving and algorithmic development including emphasis on procedural and data abstraction. Topics include elementary data structures such as arrays, files, and classes. The notions of data modeling and the linking of data type definitions with their associated operations is introduced. Study of program design, coding, debugging, testing, and documentation in a higher level language that supports the object-oriented paradigm. Intended for students who have had previous programming experience.

230 – Computer Science II: Data Structures (4)

Prerequisite: Computer Science 220. Continued study of data modeling and incorporation of abstract data types including linked lists, stacks, queues, heaps, trees, and graphs. Study of advanced sorting and searching techniques. Provides experience in the use of algorithm analysis. Continued study of program design, coding, debugging, testing, and documentation in an object-oriented higher level language.

270 – Introductory Special Topics in Computer Science (3)

Prerequisite: Specified by Instructor. Lecture or seminar class dealing with a topic accessible without extensive Computer Science experience. Most recently this has included topics such as JavaScript Programming. May be repeated for credit with a change in topic.

302 – Computer Ethics (3)

Prerequisite: Computer Science 110. An examination of issues and events related to ethics, professional conduct and social responsibility as they apply to the field of Computer Science. Includes study of ethical responsibilities and behaviors appropriate for computer scientists.

305 – Computer Systems and Architecture (4)

Prerequisites: (1) Computer Science 125 or Mathematics 201, and (2) Computer Science 230. This course examines the basic operation of computing systems. It takes a bottom-up approach covering each major component of such systems including hardware, logic circuit design, CPU instruction sets, assemblers, and compilers. Students will gain experience programming in assembly language and C.

310 – Computer Information Systems (4)

Prerequisite: Computer Science 220. This course introduces the student to the use and implications of information technology in the business environment. This course covers such topics as data management, networks, analysis and design, computer hardware and software, decision support systems, database management systems, transaction processing systems, executive information systems, and expert systems. It also provides activity with computer-based and non-computer-based problems/cases and includes real world programming projects that are implemented using a high-level programming language.

320 – Statistics for Computer Scientists (3)

Prerequisites: Mathematics 122 and Computer Science 220. A calculus-based mathematical statistics course with special emphasis on applications in Computer Science. Topics include probability, mass/density functions, discrete/continuous random variables, and general data analysis using a statistical software package.

321 – Advanced Data Structures (3)

Prerequisites: (1) Computer Science 125 or Mathematics 201, and (2) Computer Science 230. The application of data structures to the creation of reusable software components, specifically within an object-oriented context. The use of inheritance and information hiding in the design and implementation of a data structure library is emphasized. Also includes further material on the formal analysis of algorithms and data structure implementations for time and space efficiency.

326 – Theoretical Foundations of Computing (3)

Prerequisites: (1) Computer Science 125 or Mathematics 201, and (2) Computer Science 230 and Mathematics 122. Emphasis will be on structures and concepts relating to the theory of computation and the different types of theoretical machines that are mathematical models for actual physical processes. Topics may include automata theory, Turing machine theory, formal language theory, and the halting problem.

330 – Object-Oriented Analysis and Design (3)

Prerequisite: Computer Science 230. Theory and practice of the object-oriented software development paradigm. Focus is on major design principles such as abstraction, encapsulation, inheritance, polymorphism, aggregation, and visibility. Students also study modeling notations for capturing and critiquing designs, introduction to the concept of design patterns, and coverage of a catalog of common patterns. Students work in teams to develop collaborative software solutions in an object-oriented language.

331 – Computer Graphics (3)

Prerequisite: Computer Science 230. An initial course in computer graphics including the study of three-dimensional modeling involving the use of light, color, texture, and transformation; the construction of objects using constructive solid geometry; ray-tracing fundamentals and visible-surface detection; two-dimensional and three-dimensional matrix transformations; three-dimensional window to two-dimensional viewport transformations; parallel and perspective projection; clipping algorithms.

348 – Web Application Development (3)

Prerequisite: Computer Science 220. This course provides an introduction to topics related to developing Web applications including: overview of Web technology; introduction to networks and the Internet; popular scripting languages such as PHP, JSP, and JavaScript; electronic payment systems; databases; and security.

350 – Applications of Databases (3)

Prerequisite: Computer Science 230. Presents logical database modeling and design, emphasizing the construction and analysis of relational schemas. Covers semantics, integrity constraints, functional dependencies, and table normalization. Practical use of relational algebraic operators, the tuple relational calculus, and their expression in declarative query languages. Introduces basic data mining concepts. May involve student team projects to develop small but representative data collection and analysis applications.

370 through 377 – Special Topics in Computer Science (1–3)

Prerequisites: Specified by Instructor. Lecture or seminar class dealing with a topic accessible after completing Computer Science II—Data Structures. Most recently this has included topics such as Game Programming with DirectX. May be repeated for credit with a change in topic.

391 – Special Projects in Computer Science (1-4)

Prerequisite: Computer Science 230 or higher. Intensive individual investigation of significant research problem under the direction of a faculty member. GPA and course prerequisites apply.

401 – Organization of Programming Languages (3)

Prerequisites: Computer Science 326 and either 321 or 330. A course in programming language construction and design emphasizing the run-time behavior of programs. Alternative implementations of programming language constructs are considered. Techniques for language definition may also be discussed.

405 – Operating Systems (3)

Prerequisites: Computer Science 305 and either 321 or 330. This course examines the abstractions above the hardware that make a computer usable to both programmers and users. These abstractions include concurrent programming, virtual addressing, transactions, and virtualization. Many of these abstractions are useful not just for operating system kernel development but for development of any large scale programming project. Students apply these concepts by working with a real operating system kernel. Programming intensive.

410 – Database Principles and Design (3)

Prerequisite: Computer Science 350. Information structures for external storage, file processing, and information retrieval. Introduction to database systems, including design, normalization, dependency and concurrency theory. Models for representing data and relations among data elements, with primary emphasis on the relational model. Methods for assuring integrity, security, and high performance. Languages for data description and data manipulation, with emphasis on, and use of, SQL. An examination of current and future technological trends.

414 – Network Principles and Applications (3)

Prerequisite: (1) Computer Science 125 or Mathematics 201, and (2) Computer Science 230. This course provides an introduction to the basic principles of networking. Topics covered in the course include: network topologies, protocols, the OSI Model, methods of data transmission, error detection and correction, TCP/IP, network security and other topics as time permits. This course is theoretical and concept-oriented rather than consisting of the details of specific network packages.

415 – Artificial Intelligence (3)

Prerequisites: Computer Science 326 and either 321 or 330. A historical overview of the field, including reasoning and learning models, heuristic search methods, knowledge representation, and natural language understanding. Techniques for designing software systems for logic programming, theorem proving, language and image understanding, and games of strategy. Implementations of expert systems, neural networks, and genetic algorithms. Introduction to Lisp and Prolog.

420 – Simulation Techniques (3)

Prerequisite: Computer Science 321 or 330.An investigation of computer simulation techniques in the modeling of various systems. Includes an examination of various types of simulations including discrete event, Monte Carlo, and continuous time.

425 – Parallel Processing (3)

Prerequisite: Computer Science 305. Introduces massive parallelism, shared-memory strategies, and message passing approaches. Other topics are synchronization, parallel algorithm development, performance measurements, degradation, granularity, interconnection networks, and processor communication strategies. Includes study of multi-computer topologies (e.g. rings, meshes, tori, and hypercubes) and topological embeddings. Programming tools may include Multi-Pascal, MPI, and C-Linda.

430 – Software Engineering (4)

Prerequisite: Computer Science 321 or 330. Techniques for modeling, designing, implementing, and managing large scale computer programs are studied. Studies include Object Oriented Analysis and Design, modeling using UML, and application development with a CASE tool. Students work in groups and apply the techniques studied to semester-long projects.

440 – Game Programming (3)

Prerequisite: Computer Science 230. Students will design, develop, and implement computer games that involve real-time, event-driven, and multimedia programming techniques. Students learn the history of computer games and the elements of video game design and architecture.

444 – Three Dimensional Computer Graphics (3)

Prerequisites: Computer Science 230 and Mathematics 300. The study of three-dimensional modeling involving the use of light, color, texture, and transformation; visible-surface detection; parallel and perspective projections; clipping algorithms.

448 – Advanced Web Application Development (3)

Prerequisite: Computer Science 348 or CPSC 350 or permission of the instructor. An examination and application of contemporary software technologies focused on providing Web-based services and applications. Students work in teams to design and develop leadingedge projects. In the recent past this has included developing advanced data-driven applications employing AJAX, PHP, and a database management system.

470 through 477 – Selected Topics in Computer Science (3)

Prerequisite: Specified by Instructor. Treatment of selected topics in Computer Science. Most recently this has included topics such as E-Commerce and Programming with AJAX. May be repeated for credit with a change in topic.

491 –Individual Study in Computer Science (1-3)

Prerequisite: Departmental permission. Individual study under the direction of a member of the department. GPA and course prerequisites apply. May be repeated for credit with a change in topic. Two semesters of 3-credits of study required for graduation with Departmental Honors.

499 – Internship (Credits variable)

Supervised off-campus experience with an academic component, developed in consultation with the department. Only 3 credits may count toward the major and minimum GPA and course prerequisites apply.

back to top