Computer Science Course Descriptions 

CMPSC 112: Survey of Computer Science (3)

*Offered every semester
This course takes a breadth-first view of the discipline of computer science, focusing on what computers are, how they work, what they can and cannot do, and the impact they have on society. The course focuses on algorithms and how they are expressed through hardware, virtual machines, software and applications. This takes the course through many aspects of the discipline, including social impact. This course is required for all computer science and computer studies majors and minors. Students from other majors may take the course but applicability to their majors or minors may be determined only by the student's department.

CMPSC 200: Virtual Worlds (4)

This course provides an introduction to programming using the Alice system, which provides a programming environment that supports objects, methods, functions, variables, parameters, recursion, arrays and events. Students will learn to write stories and storyboards and then drag-and-drop their objects into a 3-D micro world. Alice is provided free at

CMPSC 201: Visual Basic Programming (4)

*Prerequisite: MATH 099 and CMPSC 112
*NOTE: Credit for this course will NOT be given to a student who has previously completed CMPSC 202
This course introduces the students to programming using the Visual Basic programming language. Students create simple programs that use the basic elements of programming: control structures, logical expressions, variables, arrays and screen, and file input and output. Student's are evaluated on their ability to write programs.

CMPSC 202: Principles of Computer Programming I (4)

*Prerequisite: CMPSC 112 and MATH 112
*Offered every fall
This is the first programming course in the basic sequence for computer science majors. The course will introduce the student to problem solving, algorithm development and the concept of structured programming using Java. Assignment, selection, control statements, data types, functions and arrays will be studied. The student will design, code and debug a variety of application programs. Emphasis will be on programming techniques, style and documentation.

CMPSC 203: Principles of Computer Programming II (4)

*Prerequisite: CMPSC 202 and MATH 200
*Offered every spring
Building on the techniques developed in CMPSC 202, the student will acquire a deeper understanding of structured programming concepts. Data structures such as arrays, stacks, queues and binary trees will be studied.

CMPSC 205: Productivity Applications (3)

This is a hands-on course in which you will learn and practice advanced features of the four most popular programs within the Microsoft Office Suite (Word, Excel, Access, and PowerPoint).

CMPSC 206: Web Applications I (3)

This course teaches basic website creation and maintenance including: the defining of a website, the development of pages and the use of text, graphics, hyperlinks, tables, forms, layered objects, frames, multimedia, templates, behaviors, style sheets and other features. As one of the course projects, students establish their own Web presence by developing a personal website.

CMPSC 235: Systems Analysis and Design (3)

*Prerequisite: CMPSC 112
This course covers the major aspects of the systems development life cycle. It includes such topics as data collection, cost analysis, file design, input/output design, project documentation, system testing and implementation.

CMPSC 255: Introduction to Networks (3)

*Prerequisite: CMPSC 112 or consent of the instructor
This is the first course in the Cisco CCNA Routing and Switching curriculum teaching students the architecture, structure, functions and components of the Internet and other computer networks. By the end of this course, students will be able to build simple LANS, perform basic configurations for routers and switches, and implement IP addressing schemes.

CMPSC 256: Operating Systems for Practitioners (3)

*Prerequisite: CMPSC 112
*NOTE: Credit for this course will NOT be given to a student who has previously completed CMPSC 301
This course introduces the student to hardware and software implementation issues surrounding operating systems. Topics include: file, memory, process, device and network management, the user interface and key features and implementations of popular operating systems such as Microsoft Windows Linux/UNIX and Android.

CMPSC 260: Topics in Computer Science (Credit varies)

*Prerequisite: Consent of the instructor
This course is provided for special topics in computer science of particular interest to faculty or students. Approval for course topic must be given by the department.

CMPSC 266: Routing and Switching Essentials (3)

*Prerequisite: CMPSC 255
This is the second course in the CCNA Routing and Switching curriculum teaching students how to configure a router and a switch for basic functionality. By the end of this course, students will be able to configure and troubleshoot routers and switches and resolve common issues with RIPv1, RIPng, single-area and multi-area OSPF, virtual LANs, and inter-VLAN routing.

CMPSC 267: Scaling Networks (3)

*Prerequisite: CMPSC 266
This is the third course in the CCNA Routing and Switching curriculum, teaching students how to configure routers and switches for advanced functionality. By the end of this course, students will be able to configure and troubleshoot routers and switches, and resolve common issues with OSPF, EIGRP, and STP.

CMPSC 268: Connecting Networks (3)

*Prerequisite: CMPSC 267
This is the fourth and final course in the CCNA Routing and Switching curriculum covering the WAN technologies and networks services employed by converged applications in a complex network. By the end of this course, students will be able to configure and troubleshoot network devices and resolve common issues with data link protocols. 

CMPSC 280: Web Servers (3)

*Prerequisite: CMPSC 255
This course is concerned with the tools and techniques needed by a Web server administrator and the tasks they are expected to perform. Topics include the basics of the job, server installation, and the installation and configuration of various kinds of Web servers. Linux and Windows server environments will be used.

CMPSC 281: Web Security (3)

*Prerequisite: CMPSC 280
This course provides a management overview of information security and a thorough treatment of the administration of information security. Over the past few years, technology has become a critical part of business operations of all sizes. While the threats to security are well-known, as are the general techniques for protecting information, management has not kept pace. Because so much is at stake, both personally and professionally, through the administration of computer security, this course will provide a necessary background for managing the complexities of that arena.

CMPSC 285: Digital Forensics (3)

*Prerequisite: CMPSC 280 or permission of the instructor
This course introduces students to the techniques and tools of computer forensics investigations in civil and criminal venues. Topics include coverage of the latest technologies (including PDAs, cell phones, and thumb drives), civil procedures, criminal procedures, analysis techniques, reporting, professional responsibility and ethical considerations. Hands-on activities using the most common forensic tools are an integral part of the coursework.

CMPSC 301: Operating Systems (3)

*Prerequisite: CMPSC 345
*NOTE: Credit for this course will NOT be given to a student who has previously completed CMPSC 256

The basic functions of operating systems have not changed over time, however, the expression of those functions has. This course looks at that critical layer of software and the mechanisms employed to provide a seamless interface between the user (or using application, in the case of an embedded system) and the underlying hardware of the computer device itself. Topics studied include: the history and evolution of computer operating systems, basic structure, process management, processor management, file management, memory management, input-output (or I/O) management, multimedia systems, multi-processor systems, and an in-depth look at the Linux and Windows Vista operating systems.

CMPSC 306: Web Applications II (3)

*Prerequisite: CMPSC 206
This course introduces the student to several languages and software applications that extend the capabilities of basic HTML. Database-driven pages explored in this course include: Dynamic HTML, XHTML, XML, VBScripting and Active Server Pages. 

CMPSC 309: Issues in Computing (3)

*Prerequisite: Junior-level status
This course examines the social and ethical consequences of widespread computer usage in the context of society's increasing dependence on information and telecommunications technology. A survey of prominent and interesting ethical issues and problems is provided. Students will learn to use the tools of ethical analysis to address these problems and will identify issues of professional responsibility.

CMPSC 311: Data Structures and Algorithms (4)

*Prerequisite: CMPSC 203
This course expands on the coverage of data structures in CMPSC 203. Topics include a further examination of linked lists, recursion, graph representations and algorithms, trees, hashing and methods of external sorting.

CMPSC 315: E-Commerce Applications and Technology (3)

*Prerequisite: CMPSC 206
This course is directed toward computer analysts and programmers to familiarize them with computer applications for electronic commerce site development. Essential topics in electronic commerce are explored and a software application is thoroughly developed.

CMPSC 321: Relational Database Theory and Design (4)

*Prerequisite: CMPSC 201 or CMPSC 202
This course introduces the student to the design and implementation of relational databases. Topics include: the relational model, entity-relationship modeling, normalization, Structured Query Language (SQL), database redesign, privacy and security.

CMPSC 345: Computer Systems and Organization (4)

*Prerequisite: CMPSC 202, MATH 200
This course introduces students to the internal architecture of computer systems. The course material addresses the relationships among a computer's hardware components, native instruction set, assembly language, and high-level languages. Basic concepts in computer systems and their effect on the performance of programs are introduced. Assembly language programming exercises are used to explore computer architecture.

CMPSC 350: Internship (Credit varies to a maximum of 12 hrs)

The internship opportunity is reserved for students who are employed in positions that involve computer science/studies knowledge and skills. We provide this opportunity to encourage students to gain practical, real-world experience that can enhance their understanding of the discipline and their potential as computer professionals. The student must apply for the academic credit at the time the internship takes place. See department chairperson for internship guidelines.

CMPSC 351: Algorithm Analysis and Design (3)

*Prerequisite: MATH 200 and CMPSC 203
This course provides an introduction to different design and analysis approaches of computer algorithms. These include: searching, sorting and graph algorithms. Analytic approaches including proof of correctness and calculations of time and memory complexity are covered. The concept of distributed algorithms is introduced and compared to centralized algorithms.

CMPSC 360: Advanced Topics in Computer Science (Credit varies)

*Prerequisite: Consent of the instructor
This course provides the student with an opportunity to study in detail one specific topic or area in computer science. The specific topic presented can be an area of particular interest to faculty or students, but must receive approval of the department. Possible topics include object-oriented programming, distributed systems, queuing theory, artificial intelligence and parallel processing.

CMPSC 370: Independent Study (1-4)

*Prerequisite: Consent of instructor
Individual study projects for advanced students in computer science. Topic to be determined by instructor and student.

CMPSC 390: Software Engineering (4)

*Prerequisite: senior status or departmental approval
*Requires participation in community-based activities, some of which may occur off campus. 
This course addresses the foundations, methodologies, and tools for developing high-quality large-scale software systems, with an emphasis on the technical issues of software development. Students in this course work in groups to design and implement real-world projects for clients such as non-profit organizations and other community groups. Since some of these activities may occur off campus, students should be prepared to travel to the client site.

CMPSC 395: Computer Studies Capstone Course (3)

*Prerequisite: Must be taken within one year of anticipated graduation date
This is the capstone course for the computer studies major. Students will first study and then create a professional report on one of the most recent developments in the field. The report and presentation is expected to showcase senior level skills and knowledge. Special attention will be given to career strategies and preparation for the job search.