Computer Science Courses


CMSC121. Intro Computer Science

An introduction to computer science for non-specialists. Basic computer architecture and design, storage formats, principles of computer operation, and algorithms. Application software that emphasizes the computer as a tool. Students may not enroll in this course is CMSC 201 has already been completed. 3 credits. FQRC, WI.

CMSC140. Introduction to Programming

A first course in computer programming, intended for students with no previous experience in writing computer programs. Emphasis will be placed on practical programming skills; assignments will primarily use the Python programming language. Students will cover the fundamental control structures and will learn to process real data stored in sequential lists and in key-value pairs. Students may not enroll in this course is CMSC 160 has already been completed. 3 credits. FQRC, SI.

CMSC160. Intro Algorithmic Design I

An introduction to problem solving and algorithmic design using an object-oriented programming language. Topics include programming logic, iteration, functions, recursion, arrays, memory management, user-defined data types, abstraction, and complexity analysis. Corequisite: CMSC 161. 4 credits.

CMSC162. Intro Algorithmic Design II

A continuation of CMSC 160. Topics include algorithmic design, complexity analysis, abstract data types, and encapsulation and basic data structures. Advanced topics using a modern high-level programming language inheritance, overloading, and use of objects. Prerequisite: CMSC 160 with a grade of C- or higher. Prerequisite/Corequisite: CMSC 161. 4 credits.

CMSC1QR. Comp Sci QR Transfer Pillar

Computer Science QR Pillar Course

CMSC1XX. Computer Science Elective

CMSC201. Computer Organization

The organization, design, and structure of computer systems, including both hardware and software principles. Topics include memory addressing, machine-level representations of software and data, fundamentals of logic design, and the mechanics of information transfer and control within a computer system. Prerequisite: CMSC 160; CMSC 162 recommended. 3 credits.

CMSC208. Grammars, Languages, Automata

This introduces topics in theoretical computer science including formal languages, grammars, and computability, which form the basis for analysis of programs and computation. These tools are then used to explore several modern programming languages and survey the major programming paradigms. Prerequisite: CMSC 160 with a C− or better, MATH 175; CMSC 162 recommended. 3 credits.

CMSC210. Web Page Design and Scripting

The class will study interactive web pages that provide customized data in response to visitor requests and/or collect data from site visitors. This interaction will be done via program scripts written in an appropriate language. Prerequisite: CMSC 140 or CMSC 160. 3 credits.

CMSC240. Linux Systems Administration

A hands-on approach to use and administration of the Linux-based operating systems. Emphasizes file systems, process management, account management, software patching and maintenance, text manipulation, and the use of scripts to automate administrative tasks. Prerequisite: CMSC 162 or permission of instructor. 3 credits.

CMSC242. Intro Network & Systems Progra

A programming-intensive class covering the fundamentals of operating systems and networking. Emphasizes the use of programming using an Application Programming Interface (API). Topics covered include threading and parallelism, low-level file system access and memory management, communication using signals, socket programming, and the TCP/IP network stack. Prerequisite: CMSC 162. 3 credits.

CMSC262. Data Structures Algorithms app

Introduces many of the classic advanced data structures and algorithms in the context of a survey of important applied fields of computer science. Topics include artificial intelligence, relational databases, and human-computer interaction. Prerequisite: CMSC 162; MATH 175 recommended. 3 credits.

CMSC280. Programming Second Language

A programming-intensive course that gives students a comprehensive introduction to a language not taught in the introductory sequence. Examples of languages which may be taught are Ada, Fortran, and Java. May be repeated for credit when language changes. Prerequisite: CMSC 160 or consent of the instructor. 3 credits.

CMSC283. Exper Learn Sem CMSC I

Active attendance and participation at presentations of internships, directed studies, and other learning experiences by upper-level computer science students. Pre-requisite: Sophomore standing or higher. Grading is Pass/Fail. 0 credits.

CMSC290. Self Study in Programming

Independent study of a specific programming language, its syntax and applications, based on prior study of programming languages in general. May not duplicate other language courses. Must be arranged with an instructor and approved by department chair before registering. May be repeated for credit with different languages. Prerequisite: CMSC 162. 1 credit.

CMSC292. Internship in Computer Science

A semester-long, on-the-job learning experience designed to apply the principles of computer science. 1-18 credits.

CMSC294. Applied Systems Administration

A semester-long practical learning experience designed to apply the principles of systems administration. The student will be an active maintainer of the department computer lab, network, and servers. 1 credit. Prerequisite: Instructor permission.

CMSC295. Special Topics

Selected topics in computer science. The topics may vary from semester to semester. May be repeated for credit when topics change. 1-3 credits.

CMSC2XX. Computer Science Elective

CMSC350. Ethical Issues Math CmSc

Consideration of ethical implications of mathematics and computer science in society. Overview of ethical theory; case studies of situations illustrating ethical dilemmas. A knowledge of calculus and algorithms will be assumed. 3 credits.

CMSC355. Intro Comp and Network Securit

A course dealing with basic techniques in computer and network security. Topics covered include elementary cryptography, secure programs, malicious code, protection of operating systems, database security, network security, and security administration. Prerequisite: CMSC 140 or CMSC 160, and either CMSC 201 or ISCS 371. 3 credits.

CMSC360. Computer Network Theory

A course covering the theory and design of modern computer networks. Topics include local and wide area networks, the OSI network model, basic network performance analysis, and real time networks. Prerequisite: CMSC 242. 3 credits.

CMSC362. Theory of Databases

A course covering the theory and practice of modern databases design and implementation. Topics include relational and hierarchical database design, database query languages, update consistency, and distributed databases. Prerequisite: CMSC 262. 3 credits.

CMSC381. Intro Graphics Programming

This course is designed to introduce students to computer graphics programming techniques. It will combine the use of a high level programming language with a publically available graphics application programming interface. Other topics will include the mathematics to manipulate geometric objects. Prerequisites: CMSC 162, MATH 261. 3 credits.

CMSC389. Artificial Intelligence

A programming intensive course covering the theory and techniques of artificial intelligence (AI) with implementations using both statistical and nonstatistical AI methods. Covered topics will span the central AI problems of planning, learning, and reasoning. Prerequisite: CMSC 262. 3 credits.

CMSC390. Directed Study

Individualized study; recommended only when material cannot be studied through existing course offerings. Must have permission of department chair. 1-3 credits. May be repeated when topics change; no more than 6 credits.

CMSC392. Internship in Computer Science

A semester-long, on-the-job learning experience designed to apply the principles of computer science. 1-18 credits.

CMSC395. Special Topics

Selected topics in computer science. The topics may vary from semester to semester. 1-3 credits.

CMSC3XX. Computer Science Elective

CMSC415. Theory of Computation

Continues to develop the theoretical frameworks introduced in CMSC 208 such as language and automata theory, and the computability of functions. Topics include complexity analysis through reductions, NP-completeness, hierarchy of languages, and the Church-Turing thesis. Prerequisite: CMSC 208. 3 credits.

CMSC420. Graph Theory

An introduction to topics in graph theory, focusing on analysis of specific applications and proofs of important theorems in the discipline. Topics include graphs, paths, and cycles; directed graphs, trees, and applications of graph theory in real world contexts. Prerequisites: CMSC 160 and either MATH 300 or CMSC 208. 3 credits.

CMSC442. Operating Systems

A programming-intensive course in which students learn the important data structures and algorithms of an operating system and apply them to the implementation of core O.S. components. Particular focus will be given to problems that arise in the presence of concurrency in both implementation of the operating system and application of programming. Topics include threads, synchronization constructs, I/O and interrupt handling, memory management, addressing, scheduling, and file system design. Prerequisites: CMSC 201, CMSC 242. 3 credits.

CMSC445. Compiler Design

A course covering the basic theory and techniques of compiler and code translation systems. Topics include lexical analysis, parsing, and code generation, and the various techniques used when handling differing source language classes. A programming intensive course. Also covered are the techniques of top-down and bottom-up parsing. Prerequisites: CMSC 201, CMSC 208. 3 credits.

CMSC455. Network Security Cryptography

This course covers several modern cryptographic systems, including the DES and AES encryption standards. Their applications to network security are discussed, along with issues of authentication, privacy, intruders, malicious programs and firewalls. The approach is from the theoretical side, and the mathematics of these areas is studied. Prerequisite: CMSC 160, MATH 175. 3 credits.

CMSC461. Senior Capstone Computer Scien

A capstone course designed to consolidate experiences from a variety of other courses by working in groups on one or more large projects. Principles of software engineering will be covered, including traditional and object-oriented software design, software lifecycle models, software analysis, and management implications. The implementation of developing software using teams will be stressed along with various software tools. Reusability, portability, and interoperability will be discussed. A segment on assessment will be included. Prerequisite: CMSC 208, CMSC 262. 3 credits.

CMSC483. Exper Learn Sem CMSC II

Students will present on an internship, directed study, or other approved independent learning experience. Grading is Pass/Fail. 0 credits.

CMSC490. Directed Study

Individualized study; recommended only when material cannot be studied through existing course offerings. Must have permission of department chair. 1-3 credits. May be repeated for no more than 6 credits.

CMSC492. Internship in Computer Science

A semester-long on-the-job learning experience designed to apply the principles of computer science. 1-18 credits.

CMSC495. Special Topics

Selected topics in computer science. The topics may vary from semester to semester. May be repeated for credit when topics change. 1-3 credits.

CMSC498. Senior Thesis in Computer Sci

Students conduct an in-depth project in computer science under the direction of a faculty member and the Longwood Senior Thesis Committee. May be repeated as 499. 3 credits.

CMSC499. Senior Thesis in Computer Sci

Students conduct an in-depth project in computer science under the direction of a faculty member and the Longwood Senior Thesis Committee. 3 credits.