COMPUTER SCIENCE (CMSC) - 2008-2009 Catalog

Department of Computer Science

CMSC 1053 - Computer Technology & Communication In a Global Society

This course is a study of the fundamental concepts of conventional computer hardware and software systems for gathering and conveying information effectively. The course will include a hands-on introduction to computer hardware and its operation, current microcomputer operating systems, information acquisition and distribution using the Internet and the World Wide Web, and application software for communicating with others. Legal and ethical issues related to the use of computers in a global society will be addressed.

CMSC 1103 - Introduction 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. Prerequisite(s): Two years high school algebra.

CMSC 1503 - Introduction To Programming For Non-majors

Introductory visual programming concepts are presented. Topics for this class include how to write Windows type programs, basic concepts of how a computer runs a program, algorithm development, simple database access and designing a graphical user interface. This course is recommended for people who are not majoring in computer science but would like an introductory course in writing programs. Prerequisite(s): 2 years of 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. The section listings will specify the computer language to be used as Beginning Programming (language): for example Beginning Programming (Pascal). Prerequisite(s): 2 years high school algebra.

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. Prerequisite(s): (MATH 1513 or 1555) and (CMSC 1513 or Advanced Placement high school programming course).

CMSC 1713 - COBOL

This course is a study of the syntax and semantics of the COBOL language with emphasis on structured design and structured programming techniques. Prerequisite(s): CMSC 1053 or CMSC 1103 or CMSC 1513 or written permission of instructor.

CMSC 2000 - Topics In Computing Science

Credit will vary from 1 to 4 hours. A general survey of select scientific topics.

CMSC 2123 - Discrete Structures

Discrete Structures introduces the theoretical foundation for the discipline of computer science and its application to computing. Prerequisite(s): CMSC 1613.

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. Prerequisite(s): CMSC 1513 or 1503.

CMSC 2613 - Programming II

Programming II introduces students to common programming components including stacks, queues, lists, and trees. Time complexity and algorithm analyses are discussed and applied to sorting algorithms. Prerequisite(s): CMSC 1613.

CMSC 2813 - Assembly Language Programming

This course provides an introduction to the hardware organization of a chosen computing machine and to assembly language programming on that machine. Prerequisite(s): CMSC 1613.

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. Prerequisite(s): CMSC 1613 with a minimum grade of "C".

CMSC 2913 - Advanced COBOL

This course is a continuation of CMSC 1713. Topics covered in this course include the use of multi- dimensional tables, how to use subroutines, sequential and indexed file handling, and accessing databases. Prerequisite(s): CMSC 1713. Sophomore, junior or senor standing.

CMSC 3000 - Workshop In Computing 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.

CMSC 3103 - Object Oriented Programming

Object Oriented Programming is a study of classes, objects, encapsulation, inheritance, and polymorphism. Prerequisite(s): CMSC 2613. Junior or senior standing.

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. Prerequisite(s): CMSC 2413 or written permission of instructor. Junior or senior standing.

CMSC 3413 - Advanced Visual Programming

This course is a continuation of material covered in CMSC 2413, Visual Programming. Concepts and techniques used in designing and writing programs using a graphical user interface to implement sophisticated applications are presented. Areas of study include multiple document interfaces (MDI), database access including client/server systems, building and using classes, the use of web forms, and the use of data collections. Prerequisite(s): CMSC 2413 and 2613. Junior or senior standing.

CMSC 3613 - Data Structures

Data Structures 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 analyses are performed on all algorithms. Prerequisite(s): CMSC 2123 and 2613 and 2833 and MATH 2323 and (STAT 3103 or 4113).

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. Prerequisite(s): CMSC 2833 with a minimum grade of "C".

CMSC 3990 - Advanced Topics

Credit will vary from 1 to 4 hours. Subject matter will vary within the department's field of study.

CMSC 4003 - Applications Of Database Management

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. Prerequisite(s): CMSC 3613. Junior or senior standing.

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. Prerequisite(s): CMSC 3613. Senior standing.

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. Prerequisite(s): 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. Prerequisite(s): CMSC 3613. Senior standing.

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. Prerequisite(s): 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 anaysis, finite automata, regualar expressions, LL and LR grammars, type systems and checkers, code generation, interpreters, optimization and code improvement. Prerequisite(s): CMSC 3613 and (CMSC 4023 or CMSC 4273). Senior standing.

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. Prerequisite(s): 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. Prerequisite(s): CMSC 3103 and 3613 with a minimum grade of "C". Junior or senior standing.

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. Prerequisite(s): CMSC 3613.

CMSC 4513 - Software Design & 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. Prerequisite(s): CMSC 4003, 4153, senior standing and written permission of instructor.

CMSC 4843 - Methods Of Teaching Computing

This course covers problems, materials, and methods in the teaching of computer science in the secondary school. Prerequisite(s): MATH 1643.

CMSC 4900 - Practicum In Computing Science

Credit will vary from 1 to 4 hours. Subject matter will vary within the department's field of study. Prerequisite(s): Written permission of instructor.

CMSC 4910 - Seminar In Computing Science

Credit will vary from 1 to 4 hours. Subject matter will vary within the department's field of study. Prerequisite(s): 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. Prerequisite(s): 9 hours of computer science and written permission of instructor.

CMSC 4950 - Internship In Computer Science

Credit will vary from 1 to 8 hours.

CMSC 4960 - Institute In Computing Science

Credit will vary from 1 to 8 hours. Subject matter will vary within the department's field of study. Prerequisite(s): Written permission of instructor.

CMSC 4970 - Study Tour In Computer Science

Credit will vary. Subject matter will vary within the department's field of study.

CMSC 4980 - Workshop In Computer Science

Credit will vary from 1 to 4 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 give. No more than 6 hours of workshop may be counted toward a bachelor's degree.

CMSC 5000 - Workshop In Computing Science

Credit will vary from 1 to 4 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 2 hours of workshop may be counted on a master's degree.

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. Prerequisite(s): 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. Prerequisite(s): CMSC 3613.

CMSC 5043 - Applications Of Database Management

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. Prerequisite(s): CMSC 3613 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. Prerequisite(s): CMSC 3613.

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. Prerequisite(s): CMSC 3613.

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. Prerequisite(s): CMSC 3613 and (CMSC 4023 or CMSC 4273) and graduate standing.

CMSC 5113 - Structured Design

This course covers the elements of a discipline of program and systems design. Emphasis will be placed on the architecture of programs and systems rather than programming. Prerequisite(s): CMSC 3613.

CMSC 5123 - Advanced Microcomputer Applications

This course is a survey of the installation and programming of microcomputers using microcomputer based operating systems with emphasis on maintaining tree structured directories, programming batch files, controlling i/o redirection, working with serial and parallel ports, using internal operating system commands and utilities, and installing vendor provided software.

CMSC 5133 - Theory Of Data Base Systems

This course covers the concepts, principles, implementation practices, and guidelines for the selection and installation of data base systems. Topics include choosing a dictionary, the relational approach, the hierarchical approach, and the network approach. There will be some discussion of security and integrity comparison. Prerequisite(s): CMSC 4003 or CMSC 5043.

CMSC 5243 - 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. Prerequisite(s): CMSC 4133 or 5033.

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. Prerequisite(s): CMSC 3613 with a minimum grade of "C".

CMSC 5283 - Software Engineering

Software Engineering is the application of engineering and management disciplines to computer software projects. Topics discussed are project organization, management, the system software life cycle, software development and maintenance cost estimation, software development environments, requirements engineering, testing, verification and validation, configuration management, software quality assurance, and risk analysis. Prerequisite(s): CMSC 3613.

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.

CMSC 5900 - Practicum In Computing Science

Credit will vary from 1 to 4 hours. Subject matter will vary within the department's field of study.

CMSC 5910 - Seminar / Special Topics

Credit will vary from 1 to 4 hours. Subject matter will vary within the department's field of study.

CMSC 5930 - Individual Study

Credit will vary from 1 to 4 hours. Subject matter will vary within the department's field of study. rerequisite(s): Permission of instructor.

CMSC 5960 - Institute In Computing Science

Credit will vary from 1 to 8 hours. Subject matter will vary within the department's field of study. rerequisite(s): Permission of instructor.

CMSC 5970 - Study Tour

Credit will vary. Subject matter will vary within the department's field of study.

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. Prerequisite(s): 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. rerequisite(s): Permission of instructor.