List of Computer Science Courses

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

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

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

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

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)

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

Discrete Structures introduces the theoretical foundation for the discipline of computer science and its application to computing.
Prerequisites: CMSC 1613 AND MATH 2313

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

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

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

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

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

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

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

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

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)

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

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

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)

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

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

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

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

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

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

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)

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

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

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

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

Ethics in Computing is a study of social, ethical, and professional issues related to computing.
Prerequisites: CMSC 3613

This course covers all aspects of software engineering with emphasis on requirements elicitation and analysis, software testing, and project management.
Prerequisites: CMSC 4283

This course covers software design with emphasis on architectural design, reuse of software architectures, and patterns.
Prerequisites: CMSC 4283

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.

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.

Credit will vary from 1 to 4 hours. Subject matter will vary within the department’s field of study.
Prerequisites: CMSC 3613

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

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

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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

Credit will vary from 1 to 6 hours. Subject matter will vary within the department’s field of study.
Prerequisites: Permission of instructor