List of Computer Science Courses
CMSC 1053 Professional Computer Applications and Problem Solving
CMSC 1103 Intro to Computing Systems
CMSC 1513 Beginning Programming
CMSC 1521 Beginning Programming Lab
CMSC 1613 Programming I
CMSC 1621 Programming I Lab
CMSC 2123 Discrete Structures
CMSC 2413 Visual Programming
CMSC 2613 Programming II
CMSC 2621 Programming II Lab
CMSC 2833 Computer Organization I
CMSC 3000 Workshop In Computer Science
SE 3103 Object Oriented SW Design and Construct
CMSC 3303 Systems Analysis and Design
CMSC 3413 Enterprise Programming
CMSC 3613 Data Structures and Algorithms
CMSC 3621 Data Structures and Algorithms Lab
CMSC 3833 Computer Organization II
CMSC 4003 Applications of Database Management Systems
CMSC 4023 Programming Languages
CMSC 4063 Networks
CMSC 4133 Concepts of Artificial Intelligence
CMSC 4153 Operating Systems
CMSC 4173 Translator Design
CMSC 4273 Theory Of Computing
SE 4283 Software Engineering I
CMSC 4303 Mobile Application Programming
CMSC 4323 Computer and Network Security
CMSC 4373 Web Server Programming
CMSC 4383 File Structures
CMSC 4401 Ethics in Computing
SE 4423 Software Engineering II
SE 4433 Software Architecture and Design
CMSC 4513 Software Design and Development
SE 4513 Software Engineering Senior Project
CMSC 4910 Seminar In Computer Science
CMSC 4930 Individual Study
CMSC 4950 Internship In Computer Science
CMSC 5023 Programming Languages
CMSC 5033 Concepts Of Artificial Intelligence
CMSC 5043 Applications Database Systems
CMSC 5053 Operating Systems
CMSC 5063 Networks
CMSC 5073 Translator Design
CMSC 5193 Introduction to Robotics
CMSC 5273 Theory of Computing
CMSC 5283 Software Engineering I
CMSC 5303 Mobile Apps Programming
CMSC 5323 Computer and Network Security
CMSC 5373 Web Server Programming
CMSC 5423 Software Engineering II
CMSC 5433 Software Architecture & Design
CMSC 5980 Graduate Project
CMSC 5990 Thesis
This course provides a hands-on introduction to current
professional computer applications such as word processing,
spreadsheets, Web authoring and presentation.
Essential concepts of computer hardware, software,
network and security issues are covered.
Special attention is devoted toward problem
solving using software applications in both
personal and workplace computing environments.
Legal and ethical issues related to the use
of computers are also addressed.
Prerequisites: None
Prerequisites: None
CMSC 1103 Intro to Computing Systems
This course includes the history of computers, microcomputers,
stored program principles, hardware organization, number systems,
types and uses of computers, programs and programming,
terminology of the trade and an introduction to time-sharing.
Prerequisites: Two years high school algebra
Prerequisites: Two years high school algebra
CMSC 1513 Beginning Programming
This course includes an introduction to programming concepts,
problem identification and problem solving techniques.
A specific computer language will be used for the implementation
of the problem solving process, and programming assignments will
be given so the student can demonstrate mastery of the language
and the problem solving techniques used.
Java language is currently used in all sections.
Prerequisites: Two years high school algebra
Prerequisites: Two years high school algebra
CMSC 1521 Beginning Programming Lab
This is a laboratory for CMSC 1513 Beginning Programming.
It allows students to practice basic programming techniques
using a specific computer language.
Prerequisites: CMSC 1513 or concurrent enrollment
Prerequisites: CMSC 1513 or concurrent enrollment
CMSC 1613 Programming I
Programming I introduces basic computer programming language
constructs.
Scalar and aggregate data types are discussed.
Expressions, assignment, selection and iteration statements,
and subprograms are presented. C++ language is currently used.
Prerequisites: (MATH 1513 or 1555) and (CMSC 1513 or Advanced Placement high school programming course)
Prerequisites: (MATH 1513 or 1555) and (CMSC 1513 or Advanced Placement high school programming course)
CMSC 1621 Programming I Lab
This is a laboratory for CMSC 1613 Programming I.
It allows students to practice programming with basic
computer language constructs.
Prerequisites: CMSC 1613 or concurrent enrollment
Prerequisites: CMSC 1613 or concurrent enrollment
CMSC 2123 Discrete Structures
Discrete Structures introduces the theoretical foundation
for the discipline of computer science and its application
to computing.
Prerequisites: CMSC 1613 AND MATH 2313
Prerequisites: CMSC 1613 AND MATH 2313
CMSC 2413 Visual Programming
This course is an introduction to graphical user interfaces,
event driven programming and windows on screen objects
such as command buttons, text boxes, option buttons
and graphics. Programming projects will require students
to design interactive screens as well as code subroutines
to implement the programs. VB.NET is currently used.
Prerequisites: CMSC 1513
Prerequisites: CMSC 1513
CMSC 2613 Programming II
Programming II introduces students to common programming
components including stacks, queues, lists, and trees.
Time complexity and algorithm analysis are discussed and
applied to sorting algorithms. C++ language is currently used.
Prerequisites: CMSC 1613
Prerequisites: CMSC 1613
CMSC 2621 Programming II Lab
This is a laboratory for CMSC 2613 Programming II.
It allows students to practice with common programming
components and algorithms.
Prerequisites: CMSC 2613 or concurrent enrollment
Prerequisites: CMSC 2613 or concurrent enrollment
CMSC 2833 Computer Organization I
The study of computer organization will include digital logic
and digital systems, machine level representation of data and
instructions, assembly language level machine organization,
and memory system organization.
Prerequisites: CMSC 1613
Prerequisites: CMSC 1613
CMSC 3000 Workshop In Computer Science
Credit will vary from 1 to 6 hours.
Subject matter will vary within the department’s field of study.
Normally involves lecture, films, guest speaker, etc.
A grade of “P” or “F” is given.
No more than 6 hours of workshop may be counted toward a bachelor’s degree.
Prerequisites: None
Prerequisites: None
SE 3103 Object Oriented SW Design and Construct
This course introduces principles and practices of
object oriented software design and implementation.
Also introduced are concepts of design patterns.
Java language is currently used.
Prerequisites: CMSC 2613
Prerequisites: CMSC 2613
CMSC 3303 Systems Analysis and Design
This course examines the spectrum of requirements for the design,
planning, and implementation of computer systems.
Through case studies, students will analyze existing
situations in order to propose new systems solutions.
Credit may not be earned for both CMSC 3303 and CMSC 4283.
Prerequisites: CMSC 2413 or 2613
Prerequisites: CMSC 2413 or 2613
CMSC 3413 Enterprise Programming
This course introduces enterprise programming concepts including building and using classes,
database access, client/server systems, web forms, Windows forms, and security features.
Prerequisites: CMSC 2613
Prerequisites: CMSC 2613
CMSC 3613 Data Structures and Algorithms
This course is a continuation of Programming II and
is a study of more efficient algorithms for storing and
retrieving information.
The theory and application of graphs are presented.
Time and space complexity analysis are performed on all algorithms.
C++ language is currently used.
Prerequisites: CMSC 2123 and 2613 and MATH 2323 and (STAT 2103 or 2113 or 4113)
Prerequisites: CMSC 2123 and 2613 and MATH 2323 and (STAT 2103 or 2113 or 4113)
CMSC 3621 Data Structures and Algorithms Lab
This is a laboratory for CMSC 3613 Data Structures and Algorithms.
It allows students to practice programming with efficient
algorithms for storing and retrieving information.
Prerequisites: CMSC 3613 or concurrent enrollment
Prerequisites: CMSC 3613 or concurrent enrollment
CMSC 3833 Computer Organization II
The study of computer organization will be a continuation
of Computer Organization I and will include memory system architecture,
interfacing and communication of computer elements,
functional organization, multiprocessing and
alternate architectures, and performance enhancements.
Prerequisites: CMSC 2833
Prerequisites: CMSC 2833
CMSC 4003 Applications of Database Management Systems
This course covers the integration of theory and practice
in the use of current database systems and the access of those systems.
The course covers the relational and E-R models for database organization.
Topics presented in this course include query languages (e.g. SQL),
normalization, database integrity and security,
file access methods, query processing, transaction processing,
and backup/recovery.
Credit may not be earned for both CMSC 4003 and ISOM 4263.
Prerequisites: CMSC 2613 and MATH 2313 and (STAT 2103 or 2113 or 4113)
Prerequisites: CMSC 2613 and MATH 2313 and (STAT 2103 or 2113 or 4113)
CMSC 4023 Programming Languages
The course provides a study of the underlying concepts of
programming languages such as automata, grammars,
translation, bindings, scope, data types, control,
subprogramming, concurrency, and exception handling.
Languages representing contrasting paradigms are studied.
Prerequisites: CMSC 3613
Prerequisites: CMSC 3613
CMSC 4063 Networks
The course is a study of local and wide area networks and
their implementations. Included is the theory governing
layered network architectures, the ISO-OSI communications
interface, the TCP/IP protocol, packet transmission,
error-correction techniques, addressing and routing,
and the use of existing communications software.
Prerequisites: CMSC 3613
Prerequisites: CMSC 3613
CMSC 4133 Concepts of Artificial Intelligence
This course is a study of the basic concepts and techniques
of artificial intelligence or intelligent systems.
Some of the topics covered are search techniques,
heuristics, expert systems, systems of logical inference,
methods of representing knowledge, and AI programming.
Prerequisites: CMSC 3613
Prerequisites: CMSC 3613
CMSC 4153 Operating Systems
This course is a study of operating system theory.
Topics include process management, mutual exclusion
between concurrent processes, process deadlock,
scheduling strategies, management of real, virtual,
and external memories, parallel processing, and network systems.
Prerequisites: CMSC 3613
Prerequisites: CMSC 3613
CMSC 4173 Translator Design
Translator Design introduces the principles, tools and
techniques used to design a programming language compiler.
Topics covered include lexical, syntax, and semantic analysis,
finite automata, regular expressions, LL and LR grammars,
type systems and checkers, code generation, interpreters,
optimization and code improvement.
Prerequisites: CMSC 3613
Prerequisites: CMSC 3613
CMSC 4273 Theory Of Computing
Theory of Computing is a study of computation theory
encompassing three broad categories: formal languages
and automata theory, computability theory, and complexity
theory. The topics covered include Turing machines,
finite automata, nondeterminism, pushdown automata,
decidability, and NP-completeness.
Prerequisites: CMSC 3613
Prerequisites: CMSC 3613
SE 4283 Software Engineering I
This course covers the application of engineering and
management disciplines to computer software projects.
Topics discussed are the software lifecycle,
CASE tools, requirement engineering, software models
and architectures, software design and development,
testing and validation, maintenance and evolution,
project organization, management and cost estimation,
and software quality assurance and risk analysis.
Credit may not be earned for both CMSC 3303 and CMSC 4283.
Students are encouraged to take this course after CMSC 3103
Prerequisites: CMSC 2613 and MATH 2313 and (STAT 2103 or 2113 or 4113)
Prerequisites: CMSC 2613 and MATH 2313 and (STAT 2103 or 2113 or 4113)
CMSC 4303 Mobile Application Programming
Theory and practice of mobile application programming are
studied, which includes the study of mobile computing platforms,
mobile user interfaces, animation, graphics, and
the use of the media framework and telephony APIs.
Extensive practice on a specific mobile development
platform is included. Android platform is currently used.
Prerequisites: CMSC 3103
Prerequisites: CMSC 3103
CMSC 4323 Computer and Network Security
This course examines principles of computer and network
security. Topics include security principles,
application security, web security, cryptography and
its applications, network security, and privacy issues.
Students will learn practical knowledge and skills to
identify and defend against security threats.
Prerequisites: CMSC 3613
Prerequisites: CMSC 3613
CMSC 4373 Web Server Programming
Theory and practice of web server-side programming,
including materials on presentation logic, business logic,
session control, and database management are studied.
Extensive practice in a specific server-side programming
language is included. JavaServer Faces (JSF) is currently used.
Students are encouraged to take this course after CMSC 4003
Prerequisites: CMSC 3103
Prerequisites: CMSC 3103
CMSC 4383 File Structures
File structures is a study of the physical characteristics
of direct storage devices and the data structures that
provide for efficient storage and access of data.
It includes analysis of the efficiency of the access
methods with respect to the time and space requirements.
Prerequisites: CMSC 3613
Prerequisites: CMSC 3613
CMSC 4401 Ethics in Computing
Ethics in Computing is a study of social, ethical, and
professional issues related to computing.
Prerequisites: CMSC 3613
Prerequisites: CMSC 3613
SE 4423 Software Engineering II
This course covers all aspects of software engineering
with emphasis on requirements elicitation and analysis,
software testing, and project management.
Prerequisites: CMSC 4283
Prerequisites: CMSC 4283
SE 4433 Software Architecture and Design
This course covers software design with emphasis on architectural
design, reuse of software architectures, and patterns.
Prerequisites: CMSC 4283
Prerequisites: CMSC 4283
CMSC 4513 Software Design and Development
Software Design and Development is the capstone course
in computer science. Students have an opportunity to
demonstrate and integrate skills acquired in their program
of study to a project. Oral and written presentation of
project concepts is emphasized.
Students are required to complete the department’s assessment instrument.
Prerequisites: CMSC 4003 and (4283 or 3303). Instructor permission is required. This is the capstone course for all computer science majors. Students should take this course in their last semester prior to graduation.
Prerequisites: CMSC 4003 and (4283 or 3303). Instructor permission is required. This is the capstone course for all computer science majors. Students should take this course in their last semester prior to graduation.
SE 4513 Software Engineering Senior Project
In this capstone course, students will have the opportunity
to demonstrate and integrate skills acquired in their program
of study to a project. Oral and written presentation of
project concepts is emphasized. Students will be required
to complete the department’s assessment instrument.
Prerequisites: CMSC 4003 and CMSC 4283 and (concurrent enrollment with SE 4423 and SE 4433). Instructor permission is required. Students should take this course in their last semester prior to graduation.
Prerequisites: CMSC 4003 and CMSC 4283 and (concurrent enrollment with SE 4423 and SE 4433). Instructor permission is required. Students should take this course in their last semester prior to graduation.
CMSC 4910 Seminar In Computer Science
Credit will vary from 1 to 4 hours.
Subject matter will vary within the department’s field of study.
Prerequisites: CMSC 3613
Prerequisites: CMSC 3613
CMSC 4930 Individual Study
Credit will vary from 1 to 4 hours.
Directed study in various problem areas and applications of
computers and the computer sciences. May include working
in a computer installation.
Prerequisites: 9 hours of computer science and written permission of instructor
Prerequisites: 9 hours of computer science and written permission of instructor
CMSC 4950 Internship In Computer Science
Credit will vary from 1 to 8 hours.
Students may claim academic credits by enrolling in this course
while working as intern. Contact Internship Coordinator for details.
Prerequisites: CMSC 3613. Internship Coordinator: Ms. Dawn Holt
Prerequisites: CMSC 3613. Internship Coordinator: Ms. Dawn Holt
CMSC 5023 Programming Languages
This course provides a study of the underlying concepts of programming
languages such as automata, grammars, translation, bindings,
scope, data types, control, subprogramming, concurrency, and exception
handling. Languages representing contrasting paradigms are
studied.
Prerequisites: CMSC 3613; admission to the graduate program.
Prerequisites: CMSC 3613; admission to the graduate program.
CMSC 5033 Concepts Of Artificial Intelligence
This course covers the basic concepts and techniques of artificial
intelligence or intelligent systems. It includes an introduction to some
of the software packages that are used to develop expert systems.
Other issues of importance in this course are natural language, pattern
recognition, search strategies, knowledge representation and
logical inference.
Prerequisites: CMSC 3613; admission to the graduate program.
Prerequisites: CMSC 3613; admission to the graduate program.
CMSC 5043 Applications Database Systems
This course covers the integration of theory and practice in the use
of current database systems and the access of those systems. The
course covers the relational land E-R models for database organization.
Topics included in the course are query languages (e.g. SQL),
database integrity and security, file access methods, query processing,
transaction processing, and backup/recovery.
Prerequisites: CMSC 2613 and MATH 2313 and (STAT 2103 or 2113 or 4113) and graduate standing.
Prerequisites: CMSC 2613 and MATH 2313 and (STAT 2103 or 2113 or 4113) and graduate standing.
CMSC 5053 Operating Systems
This course is a study of operating system concepts including
concurrent processes, mutual exclusion techniques, deadlock, real
and virtual memory management, job scheduling, auxiliary storage
management, network operating systems and multiprocessing.
Prerequisites: CMSC 3613; admission to the graduate program.
Prerequisites: CMSC 3613; admission to the graduate program.
CMSC 5063 Networks
This course is a study of local and wide area networks and their
implementations. Included is the theory governing layered networking
architectures, the ISO-OSI communications interface, the
TCP/IP protocol, packet transmission, error-correction techniques,
addressing and routing, and the use of communications software.
Prerequisites: CMSC 3613; admission to the graduate program.
Prerequisites: CMSC 3613; admission to the graduate program.
CMSC 5073 Translator Design
Translator Design introduces students to the principles, tools and
techniques used in designing a programming language compiler.
Topics covered include lexical, syntax, and semantic analysis, finite
automata, regualar expressions, LL and LR grammars, type systems
and checkers, code generation, interpreters, optimization, and code
improvement.
Prerequisites: CMSC 3613; admission to the graduate program.
Prerequisites: CMSC 3613; admission to the graduate program.
CMSC 5193 Introduction to Robotics
This course discusses the programming of mobile robots. It includes
applications of robots, sensors, actuators, types of locomotion, robotic
programming (including multi-threaded programming, behavior- based
arbitrator programming, and the hybrid deliberative/reactive model)
and simultaneous location and mapping (SLAM).
Prerequisites: CMSC 3613; admission to the graduate program.
Prerequisites: CMSC 3613; admission to the graduate program.
CMSC 5273 Theory of Computing
Theory of Computing is a study of computation theory encompassing
three broad categories: formal languages and automata theory,
computability theory, and complexity theory. The topics covered
include Turing machines, finite automata, nondeterminism, pushdown
automata, decidability, and NP- completeness.
Prerequisites: CMSC 3613; admission to the graduate program.
Prerequisites: CMSC 3613; admission to the graduate program.
CMSC 5283 Software Engineering I
This course covers the application of engineering and management
disciplines to computer software projects. Topics discussed are the
software lifecycle, CASE tools, requirement engineering, software
models and architectures, software design and development, testing
and validation, maintenance and evolution, project organization,
management and cost estimation, and software quality assurance
and risk analysis.
Prerequisites: CMSC 2613 and MATH 2313 and (STAT 2103 or 2113 or 4113); admission to the graduate program.
Prerequisites: CMSC 2613 and MATH 2313 and (STAT 2103 or 2113 or 4113); admission to the graduate program.
CMSC 5303 Mobile Apps Programming
The theory and practice of mobile application programming are
studied, which includes the study of mobile computing platforms,
mobile user interfaces, animation, graphics, and the use of the media
framework and telephony APIs. Extensive practice on a specific
mobile development platform is included.
Prerequisites: SE 3103; admission to the graduate program.
Prerequisites: SE 3103; admission to the graduate program.
CMSC 5323 Computer and Network Security
This course examines principles of computer and network security.
Topics include security principles, software security, web security,
cryptography and its applications, network security, and privacy issues.
Students will learn practical knowledge and skills to identify
and defend against security threats.
Prerequisites: CMSC 3613; admission to the graduate program.
Prerequisites: CMSC 3613; admission to the graduate program.
CMSC 5373 Web Server Programming
This course examines theory and practice of server-side programming
for World Wide Web, including study on presentation logic, business
logic, session control, and database management. The course also
includes extensive practice in a specific server-side programming
language.
Prerequisites: SE 3103; admission to the graduate program.
Prerequisites: SE 3103; admission to the graduate program.
CMSC 5423 Software Engineering II
This course covers all aspects of software engineering with emphasis
on requirements elicitation and analysis, software verification and
validation, and project management.
Prerequisites: SE 4283 or CMSC 5283.; admission to the graduate program.
Prerequisites: SE 4283 or CMSC 5283.; admission to the graduate program.
CMSC 5433 Software Architecture & Design
This course covers software design with emphasis on architectural
design, reuse of software architectures, and patterns.
Prerequisites: SE 4283 or CMSC 5283.; admission to the graduate program.
Prerequisites: SE 4283 or CMSC 5283.; admission to the graduate program.
CMSC 5980 Graduate Project
A contemporary problem provided by business and industry and selected
with consideration of the interests and abilities of the individual
student.
Prerequisites: Permission of instructor
Prerequisites: Permission of instructor
CMSC 5990 Thesis
Credit will vary from 1 to 6 hours. Subject matter will vary within the
department’s field of study.
Prerequisites: Permission of instructor
Prerequisites: Permission of instructor