UMBC logo
Undergraduate Catalog 2012

Computer Science

CMSC 100 (3.00)

Introduction to Computer Science

A one-semester introduction to computers and computer science. This course is intended for non-science majors. Topics include computer algorithms, data representations, computer systems, networks, databases, graphics, artificial intelligence, and the effects of computers on society.
   Course ID: 052864
   Consent: No Special Consent Required
   Components: Lecture
   Attributes: Science (non-lab) (GEP), Science (non-lab) (GFR)

CMSC 100H (3.00)

Introduction to Computer Science

A one-semester introduction to the computers and computer science. This course is intended for non-science majors. Topics include computer algorithms, data representations, computer systems, networks, databases, graphics, artificial intelligence, and the effects of computers on society. In the honors discussion session, students will read and discuss current articles about the interaction between humans and computers, and will also have hands-on laboratories to provide more in-depth exposure to programming techniques. The honors section of this course is intended to prepare students for CMSC 201.
   Course ID: 100125
   Consent: Department Consent Required
   Components: Discussion, Lecture
   Attributes: Science (non-lab) (GEP), Science (non-lab) (GFR)

CMSC 101 (4.00)

Computational Thinking and Design

Broad survey of the power, challenges, and specialties of computing fields . Topics include algorithmic problem solving, the design and development of computing solutions , human-centered computing, graphics and games, data management and exploration, hardware and systems, intelligent solutions, and academic and professional skills. Assumes no prior experience with compu ting. Restricted to those declared or considering a computing major (BTA, IS, CMSC, and CMPE). Intended to be taken in the first or second semester.
   Course ID: 052865
   Consent: Department Consent Required
   Components: Discussion, Lecture

CMSC 103 (4.00)

Scientific Computing

An introduction to computers and programming. This course is intended for students who will major in scientific disciplines other than computer science. The course emphasizes scientific applications and uses the FORTRAN programming language. The elements of FORTRAN covered in this course include assignment statements, input/output statements, control structures, repetition structures, sub-routines, functions, arrays and files. This course also covers general programming concepts, including computer components, structured programming,algorithm development, problem-solving, testing, debugging and documentation.
   Course ID: 052867
   Consent: No Special Consent Required
   Components: Discussion, Laboratory, Lecture
   Requirement Group: You must have completed MATH 151 or MATH 140 with the grade of C or better

CMSC 104 (3.00)

Problem Solving and Computer Programming

This course is designed to provide an introduction to problem solving and computer programming that does not require prior programming experience. Elementary problem solving skills and algorithm development will be introduced. Students will be taught the basic use of a programming environment and basic programming constructs (including loops, control statements, functions, and arrays). This course also teaches students the fundamentals of using the UNIX operating system, and introduces general computer science concepts. Note: This course does not fulfill any of the computer science major requirements. Students who have taken and received transfer credit for, or who are taking concurrently any computer programming course in a high-level programming language, will not receive credit for CMSC 104. The list of such computer programming courses includes, but is not limited to AP Computer Science, CMSC 201, CMSC 202, and sections of CMSC 291 that cover programming topics.
   Course ID: 052868
   Consent: No Special Consent Required
   Components: Lecture
   Course Equivalents: CMSC 104Y

CMSC 104Y (4.00)

Problem Solving and Computer Programming

This course is designed to provide an introduction to problem solving and computer programming that does not require prior programming experience. Elementary problem solving skills and algorithm development will be introduced. Students will be taught the basic use of a programming environment and basic programming constructs (including loops, control statements, functions, and arrays). This course also teaches students the fundamentals of using the UNIX operating system, and introduces general computer science concepts. Note: This course does not fulfill any of the computer science major requirements. Students who have taken and received transfer credit for, or who are taking concurrently any computer programming course in a high-level programming language, will not receive credit for CMSC 104. The list of such computer programming courses includes, but is not limited to AP Computer Science, CMSC 201, CMSC 202, and sections of CMSC 291 that cover programming topics.
   Course ID: 100689
   Consent: No Special Consent Required
   Components: Discussion, Lecture
   Course Equivalents: CMSC 104

CMSC 106 (2.00)

Programming in C

An introduction to programming in C for students experienced in a high-level programming language. Topics include elementary data structures, control structures and input/ output functions in C; the use of the C preprocessor; user-defined types such as arrays, records and structures; system calls; and the use of a symbolic debugger. Students will be expected to complete significant programming projects using the C programming language. Recommended Preparation: Mastery of a high-level programming language other than C.
   Course ID: 052870
   Consent: No Special Consent Required
   Components: Lecture

CMSC 109 (2.00)

Programming Topics

An introduction to programming in a specific programming language, which may vary from semester to semester. This course is repeatable for credit.
   Course ID: 052873
   Consent: No Special Consent Required
   Components: Lecture
   Topics: Programming In C++, Java Programming Languag, Programming Topics, Java Programming, Introduction To C++, C++ For Scienctists/Engr, Top:C++ Programming, C++ For Scientists & Eng, Oop For Internet/Java, Topic: Java Program Lang, Programmin In C++, Top: C++ Programming, Java For Scientists/Engr, C++ Programming, Java For Sci & Engrs
   Requirement Group: CMSC 103 or CMSC 201

CMSC 121 (1.00)

Introduction to UNIX

This is an introductory course on UNIX intended primarily for incoming students new to UNIX and to computing at UMBC. Topics include an introduction to the UMBC computing environment, basics of the UNIX environment, e-mail using Pine and the emacs/Xemacs editor. Students are required to obtain a UMBC GL account prior to the first day of class.
   Course ID: 052874
   Consent: No Special Consent Required
   Components: Lecture

CMSC 201 (4.00)

Computer Science I for Majors

An introduction to computer science through problem solving and computer programming. Programming techniques covered by this course include modularity, abstraction, top-down design, specifications documentation, debugging and testing. The core material for this course includes control structures, functions, lists, strings, abstract data types, file I/O, and recursion.
   Course ID: 052879
   Consent: No Special Consent Required
   Components: Discussion, Lecture
   Course Equivalents: CMSC 201H
   Requirement Group: You must have completed MATH150 or MATH151 or MATH152 with a C or better

CMSC 201H (4.00)

Computer Science I for Majors (Honors)

An introduction to computer science through problem solving and computer programming. Programming techniques covered by this course include modularity, abstraction, top-down design, specifications documentation, debugging and testing. The core material for this course includes control structures, functions, lists, strings, abstract data types, file I/O, and recursion.
   Course ID: 052880
   Consent: Department Consent Required
   Components: Discussion, Lecture
   Course Equivalents: CMSC 201
   Requirement Group: You must have completed MATH150 or MATH151 or MATH152 with a C or better

CMSC 202 (4.00)

Computer Science II for Majors

This course continues the student's development of programming and problem-solving skills by providing an introduction to object-oriented design and programming (OOP). The primary focus is on OOP principles and techniques, including encapsulation, composition, inheritance, and polymorphism. Other OOP topics such as exception handling, containers, and generic programming are also covered. This is the second course for students interested in pursuing further study in computer science.
   Course ID: 052881
   Consent: No Special Consent Required
   Components: Discussion, Lecture
   Requirement Group: You must have completed CMSC201 or CMSC201H and ( MATH150 or MATH151 or MATH151H or MATH152 or MATH152H) with a C or better

CMSC 202H (4.00)

Computer Science II (Honors) (MS)

This course continues the student's development of programming and problem-solving skills by providing an introduction to object-oriented design and programming (OOP). The primary focus is on OOP principles and techniques, including encapsulation, composition, inheritance, and polymorphism. Other OOP topics such as exception handling, containers, and generic programming are also covered. This is the second course for students interested in pursuing further study in computer science
   Course ID: 052882
   Consent: No Special Consent Required
   Components: Discussion, Lecture
   Requirement Group: You must have completed CMSC201 or CMSC201H and ( MATH150 or MATH151 or MATH151H or MATH152 or MATH152H) with a C or better

CMSC 203 (3.00)

Discrete Structures

This course introduces the fundamental tools, topics and concepts of discrete mathematics needed to study computer science. This course emphasizes counting methods, proof techniques and problem solving strategies. Topics include Boolean algebra; set theory; symbolic logic; predicate calculus; number theory; the methods of direct, indirect and inductive proofs; objective functions; equivalence relations; graphs; set partitions; combinatorics; modular arithmetic; summations; and recurrences.
   Course ID: 052883
   Consent: No Special Consent Required
   Components: Lecture
   Attributes: Mathematics (GEP), Mathematics (GFR)
   Requirement Group: You must have completed MATH 151 or MATH 140 with the grade of C or better

CMSC 232 (2.00)

Advanced Java Techniques

Advanced programming techniques in Java will be presented. The use of networking, threaded programs and techniques for object reflection and persistence will be discussed in class and will be the motivation for homework assignments. Additional topics will include distributed computation facilities in Java, including remote method invocation (RM), and distributed service architectures such as Jini and space-based computations in Java Spaces also will be examined. As time permits, Java security issues will be presented.
   Course ID: 052896
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: You must have completed CMSC202 or CMSC202H with the grade of C or better.

CMSC 291 (1.00 - 4.00)

Special Topics in Computer Science

Special Topics in Computer Science to be announced. Variable credit course is repeatable.
   Course ID: 052903
   Consent: No Special Consent Required
   Components: Lecture
   Topics: Programming Topics: C++, Basic Circuit Thoery Lab, Principles Of Digi Dsn, Introduction To C++, Java/Scientists/Engineer, Circuits Lab, Introduction To UNIX, Advanced Java Techniques, Adv Scientific Computing, Intro UNIX & Shell Prog, Intro To System Program, Comprehensive Java, Adv Java Techniques, Basic Circuit Theory Lab, Principles Of EE Lab, Prin Digital Design Lab, Transfer Success Seminar, Intro To UNIX, Prog Microcontrollers, Anatomy Of A Video Game, Java For Scientists/Engr, Programming In LISP, Java For C++ Programmers, C++ Programming, Advanced Techniques Java, Intro To UNIX And Shell, C Language for computer engine

CMSC 299 (1.00 - 4.00)

Independent Study in Computer Science

A student may enroll in this course to study computer science topics that are not available in a regular course. The student and the faculty member supervising the independent study must determine the objectives of the project, the number of credits to be earned and the evaluation criteria for the project. Students are limited to two independent study courses in computer science. Variable credit course is repeatable up to 4 credits.
   Course ID: 052904
   Consent: Department Consent Required
   Components: Independent Study

CMSC 304 (3.00)

Social and Ethical Issues in Information Technology

A survey course that reviews social issues and the ethical impact of information technology throughout the world. The course examines the policy issues that relate to the use of information technology, such as persona, privacy, rights of access, security, transborder information flow and confidentiality.
   Course ID: 052907
   Consent: No Special Consent Required
   Components: Lecture
   Attributes: Arts and Humanities (GEP), Writing Intensive, Arts and Humanities (GFR)
   Requirement Group: You must have completed CMSC202 or CMSC202H with the grade of C or better.

CMSC 313 (3.00)

Computer Organization and Assembly Language Programming

This course introduces the student to the low-level abstraction of a computer system from a programmer's point of view, with an emphasis on low-level programming. Topics include data representation, assembly language programming, C programming, the process of compiling and linking, low-level memory management, exceptional control flow, and basic processor architecture.
   Course ID: 052911
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: You must have completed CMSC 202 and CMSC 203 with a grade of C or better

CMSC 331 (3.00)

Principles of Programming Language

This course examines the theory, design and implementation of programming languages and provides students with an introduction to programming languages that are likely to be new to them. Topics include specifications of syntax and semantics, declarations, binding, allocation, data structures, data types, control structures, control and data flow, concurrency, and the implementation and execution of programs. The major language paradigms will be described and explored, including imperative, object-oriented, functional, logic programming, concurrent and others. Programming projects will provide experience in several languages.
   Course ID: 052913
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: You must have completed CMSC 202 and CMSC 203 with a grade of C or better

CMSC 341 (3.00)

Data Structures

An examination of a range of advanced data structures, with an emphasis on an object-oriented approach. Topics include asymptotic analysis; various binary search trees, including red-black and splay trees; skip lists as alternatives to binary search trees; data structures for multidimensional data such as K-D trees; heaps and priority queues, including binary heaps, binomial heaps, leftist heaps (and/or other mergeable heaps); B-trees for external storage; other commonly used data structures, such as hash tables and disjoint sets. Programming projects in this course will focus on implementation issues for data structures and on empirical analysis of their asymptotic performance.
   Course ID: 052914
   Consent: No Special Consent Required
   Components: Lecture
   Course Equivalents: CMSC 341H
   Requirement Group: You must have completed CMSC 202 and CMSC 203 with a grade of C or better

CMSC 341H (3.00)

Data Structures

An examination of a range of advanced data structures, with an emphasis on an object-oriented approach. Topics include asymptotic analysis; various binary search trees, including red-black and splay trees; skip lists as alternatives to binary search trees; data structures for multidimensional data such as K-D trees; heaps and priority queues, including binary heaps, binomial heaps, leftist heaps (and/or other mergeable heaps); B-trees for external storage; other commonly used data structures, such as hash tables and disjoint sets. Programming projects in this course will focus on implementation issues for data structures and on empirical analysis of their asymptotic performance.
   Course ID: 100127
   Consent: Department Consent Required
   Components: Lecture
   Course Equivalents: CMSC 341
   Requirement Group: You must have completed CMSC 202 and CMSC 203 with a grade of C or better

CMSC 345 (3.00)

Software Design and Development

This course introduces the basic concepts of software engineering, including software life cycle, requirements analysis and software design methods. Professional ethics in computer science and the social impact of computing are discussed as an integral part of the software development process. Additional topics may include tools for software development, software testing, software metrics and software maintenance.
   Course ID: 052915
   Consent: No Special Consent Required
   Components: Lecture
   Attributes: Writing Intensive
   Requirement Group: You must have completed CMSC341 or CMSC341H with the grade of C or better.

CMSC 352 (3.00)

Women, Gender, and Information Technology

This course examines important issues concerning women, gender, and information technology (IT). It considers women's contributions to technology, from the 19th century Analytical Engine to contemporary cybersecurity industry; how women are impacted by technology; how women and girls fare in IT educational settings; and the way these issues intersect with multiple dimensions of experience, such as nationality, race, class and age. Students will connect these issues to their ow n experiences, including academic and career choices, and will utilize information technology to completing course assignments. Recommended Course Preparation:A prior course in computer science, information systems or gender and women's studies.
   Course ID: 050049
   Consent: No Special Consent Required
   Components: Lecture
   Course Equivalents: CMSC 352H
   Same as Offering: GWST 352, IS 352
   Attributes: Social Sciences (GEP), Social Sciences (GFR)
   Requirement Group: You must have completed one IS, CMSC, or GWST course with a grade of C or better.

CMSC 352H (3.00)

Women, Gender, and Information Technology

This course examines important issues concerning women, gender and information technology (IT). Students will consider such topics as the history of women's involvement with IT; how women are impacted by technology; how women and girls fare in the educational setting as well as online; and the way gender intersects with IT in relation to other dimensions of women's experience, such as race, class and age. Students will connect issues relevant to women and IT to their own career choices, interact with women in the IT field and utilize technology for research and presentation. Prerequisite: A prior course in computer science, information systems or gender and women's studies.
   Course ID: 100341
   Consent: Department Consent Required
   Components: Lecture
   Course Equivalents: CMSC 352, GWST 352, IS 352
   Requirement Group: You must complete a course in CMSC, IS, or GWST and earn a grade of C or better in order to take this course.

CMSC 391 (1.00 - 4.00)

Special Topics in Computer Science

Special topics in computer science. Variable credit course is repeatable.
   Course ID: 052920
   Consent: No Special Consent Required
   Components: Lecture
   Topics: Program Microcontrollers, Student Succ/Appl Learn, Problem Solving Seminar, Systems Design & Programming

CMSC 404 (3.00)

The History of Computers and Computing

   Course ID: 052921
   Consent: No Special Consent Required
   Components: Lecture

CMSC 411 (3.00)

Computer Architecture

This course covers the design of complex computer systems making heavy use of the components and techniques discussed in CMSC 313, CMPE 212 and CMPE 310. All parts of the computer system - CPU, memory and input/output - are discussed in detail. Topics include information representation, floating-point arithmetic, instructions set design issues (RISC vs. CISC), microprogrammed control, hardwired control, pipelining, memory cashes, bus control and timing,input/output mechanism and issues in the construction of parallel processors.
   Course ID: 052922
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: You must have completed CMSC 313 or CMPE 212 and CMPE 310 with a grade of C or better.

CMSC 421 (3.00)

Principles of Operating Systems

An introduction to the fundamentals of operating systems. Topics include interprocess communication, process scheduling, deadlock, memory management, virtual memory, file systems and distributed systems. Formal principles are illustrated with examples and case studies of one or more contemporary operating systems.
   Course ID: 052928
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: You must have completed CMSC341 and ( CMSC313 or CMPE212 and CMPE310) all with a grade of C or better.

CMSC 426 (3.00)

Principles of Computer Security

This course will provide an introduction to computer security, with specific focus on the computing aspects. Topics covered will include: Basics of computer security including an overview of threat, attack, and adversary models; social engineering; essentials of cryptography; traditional computing security models; malicious software; secure programming; Operating system security in practice; trusted operating system design; public policy issues including legal, privacy, and ethical issues; network and database security overview.
   Course ID: 052931
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: CMSC 421

CMSC 427 (3.00)

Wearable Computing

This course covers fundamental concepts, methodologies, and algorithms related to wearable computing, including the following: Emotional Design, Convergent Design Processes, Wearability Considerations, Wearable Sensors Networks, Wearable Networks, Physiological Wearable Sensors, Innovation Processes, Marketing and business considerations, Human Aware Computing, Context Awareness, Wearable Communities, Future Mobility and Wearable Systems Applications.
   Course ID: 052932
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: Senior CMSC Major

CMSC 431 (3.00)

Compiler Design Principles

A detailed study of the design and implementation of a compiler for a high-level programming language. Topics include lexical analysis, parsing techniques (including LL and LR parsers), semantic routines,run-time storage allocation, code generation and optimization.
   Course ID: 052933
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: CMSC313 and CMSC331 and CMSC341

CMSC 432 (3.00)

Object-Oriented Programming Languages and Systems

This course covers the concepts of object-oriented programming (OOP) languages and systems, including an introduction to fundamental abstraction, modularity and encapsulation mechanisms in OOP from a software engineering and representational perspective. Basic OOP concepts covered in this course include polymorphism and operator overloading, message passing via generic functions, late- vs. early-binding times, and inheritance mechanisms and their relationship to the type systems of programming languages. Other topics include a survey of OOP languages and systems, OOP languages vs. imperative programming languages and contrasting pure OOP environments vs. mixed paradigm languages.
   Course ID: 052934
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: CMSC 331 and CMSC 341

CMSC 433 (3.00)

Scripting Languages

This course is a study of a class of programming languages and tools known as scripting languages. Topics include: writing scripts to control and connect other programs, strengths and weaknesses of interpreted languages, extending scripting languages to include new functionality, embedding functions of a scripting language in other tools, and the syntax and usage of regular expressions. Programming projects in multiple languages will be required.
   Course ID: 052935
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: You must have completed CMSC 331 with the grade of C or better.

CMSC 435 (3.00)

Computer Graphics

An introduction to the fundamentals of interactive computer graphics. Topics include graphics hardware, line drawing, area filling, clipping, two-dimensional and three-dimensional geometrical transforms, three-dimensional perspective viewing, hidden surface removal, illumination, color and shading models.
   Course ID: 052936
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: You must complete CMSC313 and CMSC341 and MATH221 with a C or better.

CMSC 436 (3.00)

Data Visualization

This course addresses the theoretical and practical issues in creating visual representations of large amounts of data. It covers the core topics in data visualization: data representation, visualization toolkits, scientific visualization, medical visualization, information visualization, and volume rendering techniques. Additionally, the related topics of applied human perception and advanced display devices are introduced. Open to computer science students with a background in computer graphics or students in data-intensive fields who are familiar with the use of the computer for data collection, storage or analysis.
   Course ID: 052937
   Consent: No Special Consent Required
   Components: Lecture
   Course Equivalents: CMSC 436H
   Requirement Group: You must have completed CMSC341 or CMSC341H with the grade of C or better.

CMSC 436H (3.00)

Data Visualization Honors

This course addresses the theoretical and practical issues in creating visual representations of large amounts of data. It covers the core topics in data visualization: data representation, visualization toolkits, scientific visualization, medical visualization, information visualization, and volume rendering techniques. Additionally, the related topics of applied human perception and advanced display devices are introduced. Open to computer science students with a background in computer graphics or students in data-intensive fields who are familiar with the use of the computer for data collection, storage or analysis. Prerequisite: CMSC 435 or permission of the instructor.
   Course ID: 100490
   Consent: No Special Consent Required
   Components: Lecture
   Course Equivalents: CMSC 436
   Requirement Group: CMSC 435

CMSC 437 (3.00)

Graphical User Interface Programming

This is a practical, hands-on course in how to program interactive 2-D graphical user interfaces using the X11/Motif package and OpenGL. Graphical user interfaces are taken here to mean not just standard widget sets, but also various interactive, pointer-based techniques that comprise the modern desktop metaphor. This course also will introduce some of the concepts and software techniques used to implement such applications. In addition, it briefly will review some of the larger issues, history and future directions of programming graphical interfaces.While the primary emphasis of the course is on 2-D interfaces, there will be a short introduction to some of the 3-D capabilities of OpenGL,as well as a discussion of 3-D interaction and virtual reality.
   Course ID: 052938
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: You must complete CMSC341 and MATH221 with a C grade or better.

CMSC 441 (3.00)

Design and Analysis of Algorithms.

This course studies fundamental algorithms, strategies for designing algorithms, and mathematical tools for analyzing algorithms. Fundamental algorithms studied in this course include algorithms for sorting and searching, hashing, and graph algorithms. Mathematical tools include asymptotic notations and methods for solving recurrences. Algorithm design strategies include the greedy method, divide-and-conquer, dynamic programming, and randomization.
   Course ID: 052940
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: You must have completed MATH 142, MATH 152, CMSC 341, STAT 355 with a grade of C or better.

CMSC 442 (3.00)

Information and Coding Theory

An introduction to information and coding theory. Topics include error-control coding problems, entropy, channels, Shannon's theorems, error-correcting codes, applications of coding theory, algebraic codingtheory, block codes, linear codes, cyclic codes, decoding algorithms, BCH codes, convolutional codes, linear sequential circuits and sequential decoding.
   Course ID: 052941
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: You must have completed CMSC 203 and MATH 221 with a grade of C or better.

CMSC 443 (3.00)

Cryptology

An introduction to cryptology, the science of making and breaking codes and ciphers. Topics include: conventional and public-key cryptosystems, including DES, RSA, shift register systems and selected classical systems; examples of cryptanalytic techniques; digital signatures; pseudo-random number generation; cryptographic protocols and their applications; and an introduction to the theories of cryptographic strength based on information theory and complexity theory.
   Course ID: 052942
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: CMSC 341, MATH 221, STAT 355

CMSC 444 (3.00)

Information Assurance

Selected recent research topics in information assurance, such as social engineering, buffer overflow, malicious code, spyware, denial of service, information warfare, computer forensics, recovery and response, enterprise security, clandestine channels and emissions security, security analysis, security models and formal techniques, best practices, and national policy for information assurance. Taking a broad, practical view of security - including people, policies and procedures, and technology - this course will help students devise and implement security solutions that meaningfully raise the level of confidence in computer systems. This course will minimize discussion of intrusion detection, firewalls, operating systems security, and mathematical cryptology, which are emphasized in other CMSC security courses.
   Course ID: 052943
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: CMSC421 and CMSC481

CMSC 446 (3.00)

Introduction to Design Patterns

This course is an introduction to software design patterns. Each pattern represents a best practice solution to a software problem in some context. The course will cover the rationale and benefits of object-oriented software design patterns. Several example problems will be studied to investigate the development of good design patterns.Specific patterns, such as observer, state, adapter, strategy, decorator and abstract factory will be discussed. Programming projects in the Java language will provide experience in the use of these patterns. In addition, distributed object frameworks, such as RMI and Jini, will be studied for their effective use of design patterns.
   Course ID: 052945
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: CMSC 331 and CMSC 341

CMSC 447 (3.00)

Software Engineering I

This course introduces the basic concepts of software engineering, including software life cycle, requirements analysis and software design methods. Professional ethics in computer science and the social impact of computing are discussed as an integral part of the software development process. Additional topics may include tools for software development, software testing, software metrics and software maintenance. Note: Credit will not be given for both CMSC 345 and CMSC 447.
   Course ID: 101927
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: You must compete CMSC341 one other CMSC 400-level course with a grade of C or better.

CMSC 448 (3.00)

Software Engineering II

A continuation of the study of software engineering with emphasis on topics not fully covered in CMSC 345 and CMSC 447. Topics may include software maintenance; metrics; quality assurance; configuration management; deployment; project planning and management; and modern software development processes, techniques and tools. Students will be given multiple individual and cooperative hands-on assignments. Note: Credit will not be given for both CMSC 445 and CMSC 448.
   Course ID: 052944
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: You must complete CMSC345 or CMSC447 with a C or better

CMSC 451 (3.00)

Automata Theory and Formal Languages

This course introduces the basic concepts in the theory of formal languages. Topics include regular grammars and finite automata, context-free grammars and push-down automata, Turing machines and the halting problem, and an introductory treatment of computable and non-computable functions.
   Course ID: 052947
   Consent: No Special Consent Required
   Components: Lecture
   Course Equivalents: CMSC 451H
   Requirement Group: You must have completed CMSC 202 and CMSC 203 with a grade of C or better

CMSC 451H (3.00)

Automata Theory and Formal Languages

This course introduces the basic concepts in the theory of formal languages. Topics include regular grammars and finite automata, context-free grammars and push-down automata, Turing machines and the halting problem, and an introductory treatment of computable and non-computable functions.
   Course ID: 100242
   Consent: Department Consent Required
   Components: Lecture
   Course Equivalents: CMSC 451
   Requirement Group: You must have completed CMSC 202 and CMSC 203 with a grade of C or better

CMSC 452 (3.00)

Logic for Computer Science

This course covers the fundamental topics in sentential and first-order logic, including models, logical consequence, deduction and the completeness theorem. Other topics include: undecidability theorems, including Goedel's incompleteness theorem and Tarski's theorem; Herbrand's theorem; and applications including resolution, logic programming, automatic deduction, program specification and program verification.
   Course ID: 052948
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: You must have completed CMSC203 with the grade of C or better.

CMSC 453 (3.00)

Applied Combinatorics and Graph Theory

An introduction to the application of combinatorial methods to computer science. Topics include enumeration methods, recurrence relations, generating functions, graph theory and graph algorithms, and connectivity, Euler tours, Hamiltonian cycles, flow graphs and transport networks, matching theory, planarity, Kuratowski's theorem and NP-complete combinatorial problems.
   Course ID: 052949
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: You must complete CMSC341 and MATH221 and MATH152 or MATH142 with a C or better.

CMSC 455 (3.00)

Numerical Computations

Topics include numerical linear algebra, interpolation, solving non-linear systems and the numerical solution of differential equations. This course also provides some emphasis on numerical algorithms andcomputation in a parallel environment.
   Course ID: 052951
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: You must complete CMSC341 and MATH221 and MATH152 or MATH142 with a C or better.

CMSC 456 (3.00)

Symbolic Computation

The theme of this course is abstract algebra from an algorithmic perspective. Algorithms for computing in groups, rings, fields, ideals, quotient rings and other algebraic objects are studied. For example, the Coxeter coset enumeration and the Groebner basis algorithms are studied. Algebraic varieties play a key role in this course. The course also covers many applications of symbolic computation, such as applications to algebraic coding theory, robotics and automatic theorem proving. There are various projects using a symbolic computation package such as Maple or Mathematica.
   Course ID: 052952
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: You must complete CMSC341 and MATH221 and MATH152 or MATH142 with a C or better.

CMSC 457 (3.00)

Quantum Computation

The course begins with a brief overview of those topics in quantum mechanics and mathematics needed for the understanding of quantum computation. It will then focus on quantum algorithms, covering such topics as quantum superposition and quantum entanglement, quantum decoherence, quantum teleportation, quantum Turing machines, Shor's Algorithm, Grover's algorithm, Hallgren's algorithm, quantum information theory, quantum data compression, quantum cryptographic protocols, quantum error-correcting codes, implementation issues.
   Course ID: 100191
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: You must have completed CMSC 203 and MATH 221 with a grade of C or better.

CMSC 461 (3.00)

Database Management Systems

This course covers database management and the different data models used to structure the logical view of databases. The course also covers database design and implementation techniques, including file organization, query processing, concurrency control, recovery, integrity and security.
   Course ID: 052954
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: You must have completed CMSC341 or CMSC341H with the grade of C or better.

CMSC 465 (3.00)

Introduction to Electronic Commerce

Electronic commerce is the use of electronic means to pursue business objectives. It relies on a wide range of modern technologies, such as the World Wide Web, telecommunications, database technologies, agent technologies, business intelligence, multimedia and user interfaces. This course puts special emphasis on the student's ability to do research in existing and emerging technology and to summarize and present findings clearly. An important part of this course is the development of technical writing skills. The second part of the course concentrates on the issues that are not solely technical, such as trust management, privacy and personalization, and the role of electronic market in revolutionizing traditional industries.
   Course ID: 052955
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: CMSC 461 and CMSC 481

CMSC 466 (3.00)

Electronic Commerce Technology

This course is designed to prepare students to be e-commerce developers. It introduces students to the changing and competitive landscape of e-commerce technology, products and solutions. It begins with an introduction to WWW technology and an overview of Web applications and services. It further discusses networking technologies with the view toward mobile and wireless commerce and object orientation and Web programming. An overview of Java language and relational databases is given. Database-Web connectivity is discussed.The course proceeds with the study of inter-process communications in a distributed environment concentrating on Java RMI and COBRA technologies. Development of interactive Web pages with JavaScript and dynamic HTML, one of the basic skills in the area of e-commerce development, is covered.
   Course ID: 052956
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: CMSC 461 and CMSC 481

CMSC 471 (3.00)

Introduction to Artificial Intelligence

This course provides a broad introduction to artificial intelligence, its sub-fields and their applications. Topics include problem-solving approaches, problem spaces and search, knowledge representation and reasoning, logic and deduction, planning, expert systems, handling uncertainty, learning and natural language understanding.
   Course ID: 052958
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: You must have completed CMSC341 or CMSC341H with the grade of C or better.

CMSC 473 (3.00)

Introduction to Natural Language Processing

Natural language processing (NLP), the first non-numerical application of computing, was first studied more than 50 years ago. The ultimate goal of NLP is to enable computers to communicate with people the same way that people communicate among themselves. To do so, the computers must be able to understand and generate text. The course will introduce the students to the problems, methods, and applications of NLP.
   Course ID: 052960
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: You must have completed CMSC 331 with the grade of C or better.

CMSC 475 (3.00)

Introduction to Neural Networks

This course is an in-depth introduction to neural networks. Topics include: characteristics of neural network computing; major neural network models and their related algorithms; supervised, unsupervised and reinforcement learning; and neural network application in function approximation, pattern analysis, optimization and associative memories.
   Course ID: 052962
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: You must have completed CMSC341 or CMSC341H with the grade of C or better.

CMSC 476 (3.00)

Information Retrieval

This course is an introduction to the theory and implementation of software systems designed to search through large collections of text. The first course objective is to cover the fundamentals of Information Retrieval (IR): retrieval models, search algorithms and IR evaluation. The second is to give a taste of the implementation issues through the construction and use of a text search engine.
   Course ID: 052963
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: You must have completed CMSC341 or CMSC341H with the grade of C or better.

CMSC 477 (3.00)

Agent Architectures and Multi-Agent Systems

This course covers fundamental techniques for developing intelligent agents and multi-agent systems, including cognitive, logic-based, reactive and belief-desire-intention architectures; inter-agent communication languages and protocols; distributed problem-solving, planning and constraint satisfaction methods; distributed models of rational behavior; and learning and adaptation in multi-agent systems. This course is repeatable up to 3 credits.
   Course ID: 052964
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: You must have completed CMSC 471 with a grade of C or better.

CMSC 478 (3.00)

Introduction to Machine Learning

This course covers fundamental concepts, methodologies, and algorithms related to machine learning,which is the study of computer programs that improve some task with experience. Topics covered include decision trees, perceptrons, logistic regression, linear discriminant analysis, linear and non-linear regression, basic functions, support vector machines, neural networks, genetic algorithms, reinforcement learning, naive Bayes and Bayesian networks, bias/variance theory, ensemble methods, clustering, evaluation methodologies, and experiment design.
   Course ID: 052965
   Consent: No Special Consent Required
   Components: Lecture
   Course Equivalents: CMSC 478H
   Requirement Group: You must have completed CMSC 471 with a grade of C or better.

CMSC 478H (3.00)

Introduction to Machine Learning

This course covers fundamental concepts, methodologies, and algorithms related to machine learning,which is the study of computer programs that improve some task with experience. Topics covered include decision trees, perceptrons, logistic regression, linear discriminant analysis, linear and non-linear regression, basic functions, support vector machines, neural networks, genetic algorithms, reinforcement learning, naive Bayes and Bayesian networks, bias/variance theory, ensemble methods, clustering, evaluation methodologies, and experiment design.
   Course ID: 100216
   Consent: Department Consent Required
   Components: Lecture
   Course Equivalents: CMSC 478
   Requirement Group: You must have completed CMSC 471 with a grade of C or better.

CMSC 479 (3.00)

Introduction to Robotics

This course covers fundamental concepts, methodologies, and algorithms related to autonomous mobile robotics, touching on mechanical, motor, sensory, perceptual, and cognitive aspects of the problem of building robots that move about and decide what to do on their own. Specific topics covered include legged and wheeled location, kinematic models and constraints, mobile robot maneuverability, motion control, sensors and sensing, perception, localization, belief representations, map representations, probabilistic map-based localization, autonomous map building, planning, reacting, and navigation architectures.
   Course ID: 052966
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: You must have completed CMSC 471 with a grade of C or better.

CMSC 481 (3.00)

Computer Networks

This course introduces the fundamentals of data communication and computer networking, including circuit and packet switching; network architectures and protocols; local/metropolitan/wide-area networks, OSI and TCP/IP standards; network programming and applications; and network management.
   Course ID: 052968
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: You must have completed CMSC341 or CMSC341H with the grade of C or better.

CMSC 483 (3.00)

Parallel and Distributed Processing

This course provides a project and applications-oriented approach to parallel and distributed programming. Students will learn a specific parallel language and programming environment and will complete a large programming project. Topics include a selected parallel programming language, a survey of parallel and distributed architectures and associated programming styles, an introduction to parallel and distributed algorithms, and a study of trade-offs between computation and communication in parallel processing.
   Course ID: 052970
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: CMSC 421

CMSC 484 (3.00)

Java Server Technologies

This course is an in-depth look at several of the technologies currently in use to develop applications for the Web. Topics include the use of Java Servlets and Java Server Pages (JSP) and their benefits over traditional CGI programs, the development of web services using SOAP and XML, the use of Enterprise Java Beans to encapsulate server-side business logic and the use of application servers. Several programming projects will be done using these technologies and an appropriate Webserver, such as Apache Tomcat. In addition, several related technologies, such as PHP and Javascript, will be covered.
   Course ID: 052971
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: You must have completed CMSC202 or CMSC202H with the grade of C or better.

CMSC 486 (3.00)

Mobile Telephony Communications

This course provides a technical introduction to mobile radio telephony. Topics include: the evolution of mobile radio communications, transforming signal representation between time and frequency domains, allocation and assignment of communication channels for cellular phones, signal modulation techniques and wireless networks. An in-depth study of the GSM and IS-95 CDMA cellular phone systems also will be presented.
   Course ID: 052972
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: CMPE 313 or CMPE 212, MATH 152

CMSC 487 (3.00)

Introduction To Network Security

The objective of this course is to teach the fundamental concepts, architectures, and protocols related to network security. Topics covered include: Overview of network security; Basics of cryptography; Threat models; Authentication and Authorization Mechanisms and Standards; Public Key Infrastructure; Electronic Mail Security; Network Layer Security; Transport layer and web security; Packet filtering; Firewalls; Intrusion Detection, and Virtual Private Networks; Recent topics in Network Security.
   Course ID: 052973
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: CMSC421 and CMSC481

CMSC 491 (3.00)

Special Topics in Computer Science

Special topics in Computer Science. This course is repeatable for credit.
   Course ID: 052975
   Consent: No Special Consent Required
   Components: Lecture
   Topics: Top:Obj Orien Prog & Lan, System Implement & Integ, Software Engineering, Distributed Systems, Scripting Languages, Ooa&D, Java Programming, Computer Security, Computer Animation, Electronic Commerce, Wireless Communications, Digital Signal Process, E-Commerce Technology, Enterprise Syst Security, Mobile Radio Telephony, Computer Science, Intro To Design Patterns, Machine Learning, Cell Processors & Applic, Object-Oriented Program, Graphical User Interface, Internet Tools/Protocols, Graph User Interface Pro, Symbolic/Algebraic Proc, Sql Programming, Symbolic Comput Maple, Introduction To UNIX, Java II, Med Software Engineering, Net Prog Mgmt & Admin, Data Network/Security, Microprocessor Systems, Entr Comp & Web Tech, Information Retrieval, Ontological Semantics, UNIX Sec And Admin Pol, Advanced Natural Lang Pr, Intro Machine Learning, Intro To It Services, Srvc Oriented Computing, Spec Topics In Comp Sci, Obj-Orient Anal & Design, UNIX Networking, VLSI Systems, Advance VLSI Design, Developing Palmtop Sys, Data Mining, UNIX System Admin, Scrty In Dstrbtd & Mble, Adv Natural Lang Proc, Comp Graphics For Games, Special Topics, Network Programming, Semantic Web, Sensor Networks, UNIX Security Admin Poli, Object Oriented Analysis, System Implementation, Program Logic Devices, Database Perform Anal, Oracle-Forms, Oracle - Forms, Data Drvn Info Arch, Design Patterns In Java, Creating Web Services, Electronic Commerce Tech, Data & Network Security, Micro Processor Systems, Database Implementation, Adv In E-Learning Tech, Java Server Technologies, Information Assurance, Real-Time Shading, Top:Graphics Prog Lang, Tcp/Ip, Adv Computer Networks, Java I, Neural Networks, Web & Data Mining, Mobil Computing, Computing & Web Tech, Entrprise Comp & Web Tec, Intro To E-Commerce, System Maintenance, Natural Language Process, Spec Topic In Comp Sci, Intro To Nat Lang Proc, Mobile Computing, Embedded Systems, Wireless Sensor Networks, Artistic Rendering, Robotics, Wearable Computing, Network Info Retrieval, Database Design, Object-Oriented Analysis, Programming In Java, VLSI Manufacturability, Data-Driven Info Process, Topics In Systems Admin, Wireless Communication, Distrib Multimedia Sys, Agent Based Information, Software Quality Engin, Wearable Computing, Malicious Software, Prog Embedded Systems, Serv Oriented Computing, Social Web Technologies, Contingency Planning, Top:Software Eng W/Ada, Graphics Program Lang, Tcp/Ip Programming, Topic: S Q L, Topic:Tcp/Ip Programming, Data Base Design, Hardware Design Language, Digital Image Processing, Intro To Data Mining, Introduction To Robotics, Intro Network Security, Electronic Voting Sys, Data Visualization, Top: Dstrb Database Syst, Client/Server Data Sys, Ooa & D, Visualization, Real-Time Graphics, Neural Network Computing, Project Management, Agent Architectures, Sec In Wireless Dis Sys, Quantum Computation, Web Serv Orien Computing, Mobile Platform Dev: iPhone and iPod, Computer Forensics and Intrusions, Intro to Parallel Computing:, Intro Parallel Comp: Emphas Use of IBM Cell B.E., User Interface Programming, Multi- and Many-core Programming, Game User Interface Programming, Advanced FPGA Design, Intro to Quantum Mechanics for, Computational Photography: In, Probabilistic Models, Data Intensive Computing, Computation, Complexity & Emergence, Advanced Computer Graphics, Computation, Complexity, and Emergence, Privacy and Security in a Mobile Social World, Graphics for Games, Medical Informatics, Clinical Informatics, Malware Analysis, Systems for Smart Home Automation, Cybersecurity Research Seminar, Hadoop Based Distributive Computing, Human Cmptg in Visualization

CMSC 493 (3.00)

Capstone Games Group Project

The computer games capstone course is designed to allow students completing the computer science games track to engage in a complete group project development experience. This will help them to integrate the various technical concepts they have learned in earlier courses. The course aims to impart a foundation in team leadership and project management ability that will allow graduates to function effectively within multi-disciplinary teams.
   Course ID: 052976
   Consent: Department Consent Required
   Components: Lecture
   Requirement Group: You must have completed CMSC 435 and CMSC 471 with a grade of C or better.

CMSC 495 (3.00)

Honors Thesis

Under the supervision of a faculty advisor, students in the Computer Science Honors Program will write and submit a scholarly paper reporting on their senior project.
   Course ID: 052977
   Consent: Department Consent Required
   Components: Lecture

CMSC 498 (3.00)

Independent Study in Computer Science for CMSC Interns and Coop Students

Consult the department Web page on CMSC 498 for more information.
   Course ID: 052980
   Consent: Department Consent Required
   Components: Independent Study

CMSC 499 (1.00 - 4.00)

Independent Study in Computer Science

A student may enroll in this course to study computer science topics that are not available in a regular course. The student and the faculty member supervising the independent study must determine the objectives of the project, the number of credits to be earned and the evaluation criteria for the project. Students are limited to two independent study courses in computer science. Variable credit course repeatable up to 4 credits.
   Course ID: 052981
   Consent: Department Consent Required
   Components: Independent Study
   Requirement Group: You must be junior standing

Computer Engineering

CMPE 101 (3.00)

Introduction to Computer Engineering

Introduction to engineering, with emphasis on the electrical and computer disciplines. It introduces the engineering discipline and the non-technical, social, ethical, and environmental issues that an engineer must take into account. Design process, working in teams, oral and written communication skills are covered. Technical topics include DC circuits, laboratory instrumentation, computer organization, machine language, and programming in a language such as C. Students will work in teams on a design project, which includes design, construction, evaluation, testing, modeling and presentation.
   Course ID: 100251
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: You must have completed MATH 150 with a grade of C or better

CMPE 212 (4.00)

Principles of Digital Design

This course introduces students to the science of digital design. The topics covered include: Boolean algebra; logic theorems; logic circuits and methods for their simplification, including Karnaugh maps and the Quine-McCluskey algorithm;combinational design; electrical characteristics of gates, timing, races and hazards; sequential circuits, their specification via state machines and minimization; principles of register transfer notation; exposure to hardware description language(s); and synthesis tools. This course includes a laboratory.
   Course ID: 052814
   Consent: No Special Consent Required
   Components: Discussion, Laboratory, Lecture
   Attributes: Course Fee = $50.00
   Requirement Group: You must have completed CMSC203 with the grade of C or better.

CMPE 306 (4.00)

Introductory Circuit Theory

This course introduces the fundamental linear passive elements of resistance, capacitance, inductance and the physical basis for their current voltage characteristics. It covers the basic analysis of circuits with these linear passive elements including Kirchoff's laws, node and mesh analysis and a solution of the resulting circuit differential equations for transient and steady-state responses. The frequency domain description of circuit analysis is introduced. The operational amplifier and circuits using these components is covered. The basics of magnetic induction and transformers in linear circuits are discussed. The course includes a laboratory in which the student designs and makes measurements on simple test circuits using both real components and PSPICE simulation.
   Course ID: 052815
   Consent: No Special Consent Required
   Components: Laboratory, Lecture
   Attributes: Course Fee = $50.00, Science Plus Lab (GEP), Science Plus Lab (GFR)
   Requirement Group: You must complete PHYS122 or MATH225 with a grade of C or better. MATH225 can be taken concurrently.

CMPE 306T (1.00)

Introductory Circuit Theory Lab

This course covers the lab material from CMPE306. The course is intended only for transfer students who have taken a 3-credit equivalent course to CMPE 306 before transferring to UMBC. Equivalent 3-credit courses will only be transferred to 4-credit CMPE306 after the student has successfully passed CMPE306T with a regular grade.
   Course ID: 052816
   Consent: No Special Consent Required
   Components: Laboratory
   Attributes: Course Fee = $50.00

CMPE 310 (4.00)

Systems Design and Programming

This course provides computer engineering students with system design software and hardware experience. This course covers hardware features that support advanced process and memory management in modern architectures such as the Pentium. The details of the entire chipset for 8086 are covered, including topics related to the register architecture, machine language, clock generator, bus controller and memory, I/O and interrupt interface. Other details of a complete computer system are discussed, including I/O bus protocols and support chips, memory chips, interrupt handler hardware and external support chips for disk storage, video and direct memory access. This course includes a laboratory that focuses on assembly language programming and board design software.
   Course ID: 052817
   Consent: No Special Consent Required
   Components: Discussion, Laboratory, Lecture
   Attributes: Course Fee = $50.00
   Requirement Group: You must have completed CMPE 212 with a B or better and CMSC 201 or CMSC201H with a C or better.

CMPE 311 (3.00)

C Programming and Embedded Systems

In this course, students learn about hardware and software aspects of embedded systems. Students learn C programming language through use in an embedded platform. The course builds on CMPE 310, introducing advanced topics including communication interfaces, advanced IO devices and other peripherals, ultitasking, firmware, real-time operating systems/embedded operating systems and device drivers. The course will provide a hands-on experience in designing and ramming an embedded system using a microcontroller-based development platform.
   Course ID: 052818
   Consent: No Special Consent Required
   Components: Discussion, Lecture
   Requirement Group: You must complete CMPE310 with a grade of C or better.

CMPE 312 (3.00)

Principles of Digital Design

   Course ID: 052819
   Consent: No Special Consent Required
   Components: Lecture

CMPE 312L (2.00)

Fundamental Digital Design Laboratory

   Course ID: 052820
   Consent: No Special Consent Required
   Components: Discussion, Laboratory, Lecture

CMPE 314 (4.00)

Principles of Eletronic Circuits

A brief overview of semi-conductor devices and technology. The basic physical operation of PN-junction diodes, junction field effect transistors, MOSFETs and bipolar transistors. The corresponding small signal AC models. Basic transistor circuit configurations (CE, CC CB, CS, CD, CG). DC bias. Small signal analysis. Simple multi-transistor circuits: diffamp, operational amplifier and current mirror frequency response. In addition to the lectures, there is a laboratory associated with the course. You must have passed the Computer Engineering Gateway to get into this class.
   Course ID: 052822
   Consent: No Special Consent Required
   Components: Laboratory, Lecture
   Attributes: Course Fee = $50.00
   Requirement Group: You must have completed CMPE306 and MATH225 with a C or better

CMPE 314T (1.00)

Electronics Circuits Lab

This course covers the lab material from CMPE314. The course is intended only for transfer students who have taken a three-credit equivalent course to CMPE314 before transferring to UMBC. Equivalent 3-credit courses will only be transferred to 4-credit CMPE314 after the student has successfully passed CMPE314T with a regular grade.
   Course ID: 052823
   Consent: No Special Consent Required
   Components: Lecture
   Attributes: Course Fee = $50.00

CMPE 315 (4.00)

Principles of VLSI Design

Introduction to the concepts and techniques of VLSI (Very Large Scale Integration)design, the VLSI design process, details of the MOS transistor, CMOS processing technology and device fabrication, design rules, digital CMOS circuits, VLSI structures, timing issues, simulation, real circuits and performance. This course includes a laboratory that uses the CADENCE design tools.
   Course ID: 052824
   Consent: No Special Consent Required
   Components: Discussion, Laboratory, Lecture
   Attributes: Course Fee = $50.00
   Requirement Group: You must complete CMPE 314 with a C or better before taking this class.

CMPE 320 (3.00)

Probability, Statistics, and Random Processes

This course presents the fundamental concepts of probability, statistics and random processes from a computer and electrical engineering prospective, emphasizing applications in communications and signal processing. Students will learn the basics to analyze and model the probabilistic behavior of engineering systems and to analyze experimental data associated with such systems. You must have passed the Computer Engineering Gateway to get into this class.
   Course ID: 052825
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: You must have completed MATH251 or MATH251H and MATH225 with a C or better

CMPE 321 (2.00)

Communication Laboratory

This course exposes students to basic laboratory techniques in communications and will provide a gloabal view of optical and wireless communications systems. Experiments will familiarize students with laser diode DC and AC characteristics, with antenna emission and transmission characteristics, and with RF and microwave modulation and demodulation instruments. Experiments will provide a basic understanding of laser and wireless transmission and reception, and they will acquaint students with communication modulation formats like AM, FM, PM, ASK, FSK, PSK, DQPSK, GMSK, as well as with FH and DS CDMA techniques. Experiments will provide an introduction to transmission errors and BER testing techniques.
   Course ID: 052826
   Consent: No Special Consent Required
   Components: Laboratory
   Attributes: Course Fee = $50.00
   Requirement Group: You must complete CMPE 314 with a C or better before taking this class.

CMPE 323 (4.00)

Signal and Systems Theory

This course covers basic linear signal and system theory from both continuous-time and discrete-time perspectives, covering linear systems, impulse response, Fourier Series and Transforms including DFT and FFT, transfer functions, and filters. It will touch on Laplace and Z transforms as time permits. It is a core requirement for students taking the Communications Track and is an elective for all other students. The course includes a laboratory section that focuses on the use of MATLAB to solve and visualize problems that apply the theory discussed in lecture. .
   Course ID: 052827
   Consent: No Special Consent Required
   Components: Discussion, Laboratory, Lecture
   Requirement Group: You must complete CMPE 306 and MATH 225 with a grade of C or better before taking this class.

CMPE 330 (3.00)

Electromagnetic Waves and Transmission

An introduction to waves, transmission lines, and electromagnetics is made with the focus on computer engineering and communications applications. The physical limits on Kirchoff's Laws are discussed. Phasor and vector analysis is reviewed. Transmission lines are studied in the time domain and the frequency domain. Electrostatics, magnetostatics, and the calculation of the capacitance and inductance in transmission lines are then studied. Time-varying fields, and the integral, differential, and phasor forms of Maxwell's equations are introduced. Plane waves are studied.
   Course ID: 052828
   Consent: No Special Consent Required
   Components: Discussion, Lecture
   Requirement Group: You must complete CMPE306 and MATH251 and MATH 225 all with a grade of C or better before taking this class.

CMPE 349 (2.00)

Introduction to Professional Practice

Introduction to systems engineering, project management, and professional ethics preparing students for immediate immersion in CMPE450 Capstone I. Development and practice of skills in the design and partitioning of a system from initial customer requirements through development of specifications, Statement of Work, and proposal documents. The Classroom environment simulates the professional workplace. Students are required to develop and write various technical documents throughout the course. Professional practice experience includes real-world workplace ethics and behaviors. Recommended Course Preparation:This class is intended to be taken the semester before enrolling in CMPE450 Capstone I.
   Course ID: 102070
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: You must complete CMPE Gateway which is CMPE212, CMSC201 or CMSC201H, MATH152 or MATH152H, and ENES101 or ENES101H all with a B or better.

CMPE 413 (4.00)

Principles of VLSI Design

   Course ID: 052831
   Consent: No Special Consent Required
   Components: Discussion, Laboratory, Lecture

CMPE 414 (3.00)

Advanced VLSI Design

This course covers advanced high-speed digital design concepts. Students work in groups to design, implement, simulate and fabricate a large design component such as a microprocessor.
   Course ID: 052832
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: You must complete CMPE 315 before taking this class.

CMPE 415 (3.00)

Programmable Logic Devices

This course covers the concepts, structure and programming characteristics of programmable logic devices such as PLDs and FPGAs. Hardware Description Languages (HDLs) are used to create designs that are tested on FPGA devices.
   Course ID: 052833
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: You must complete CMPE310 with a grade of C or better.

CMPE 416L (3.00)

Capstone Computer Engineering Laboratory

   Course ID: 052835
   Consent: No Special Consent Required
   Components: Lecture

CMPE 417 (3.00)

VLSI Design Algorithms

The design and implementation of algorithms for VLSI. Algorithms used at all levels of the design process are examined, including requirement specification, logic optimization, critical path analysis, place and route, mask layout, power analysis, logic simulation, fault simulation and test generation algorithms.
   Course ID: 052836
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: You must complete CMPE 315 before taking this class.

CMPE 418 (3.00)

VLSI Design Verification and Testing

Introduction to digital design verification and testing topics, including design verification process, fault modeling, fault simulation, automatic test pattern simulation, functional test, logic and parameter testing techniques, and packagetesting. Built-in self test, design for testability and sequential test generation issues will be examined. Commercial computer-aided verification and ATPG tools will beused to generate tests on existing designs. This course is repeatable for credit.
   Course ID: 052837
   Consent: No Special Consent Required
   Components: Lecture
   Topics: VLSI Design Verif/Test

CMPE 419 (3.00)

Computer Arithmetic Algorithms and Implementations

This course introduces students to the algorithms employed in modern ArithmeticLogic Units (ALUs) and DSP processors to realize arithmetic operations. The topics covered include: introduction to arithmetic, unconventional fixed-radix number systems, redundant representations, sequential algorithms for multiplication and division, binary floating point numbers, fast addition and multiplication, fast division, evaluation of elementary functions (polynomial/rational function methods as well as CORDIC), logarithmic and residue number representations. Other topics are covered in articles from current literature in the area. Some knowledge of material from CMPE 315 is beneficial but not essential.
   Course ID: 052838
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: You must complete CMPE 212.

CMPE 422 (3.00)

Digital Signal Processing

Discrete-time signals and system analysis and the z-transform; sampling of continuous time signals, analog-to-digital and digital-to-analog conversion;design of finite impulse response and infinite impulse response digital filters, direct and computer-aided designs; the discrete Fourier transform and fast Fourier transform; effects of quantization and finite work-length arithmetic.
   Course ID: 052839
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: You must complete CMPE 323 with a grade of C or better before taking this class.

CMPE 423 (3.00)

Principles of Communication Engineering

Time- and frequency- domain description of signals used in communication. Mathematical characterization of noise effects. The mathematical description of analog modulation of transmissions, including amplitude, phase, and frequency modulation, and basic block-diagram level description of associated receiver and transmitter architectures. The effects of AWGN on analog modulations. Digital transmission by energy- and bandwidthconstrained waveforms, including PAM, PSK, QAM and M-ary orthogonal signaling. Analysis of digital communications in additive white Gaussian channels. Overall communication systems engineering process, including the analysis and preparation of link-budgets for free-space, line-of-sight propagation, with examples drawn from contemporary radio communication systems.
   Course ID: 052840
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: You must complete CMPE320 and CMPE323 with a grade of C or better before taking this class.

CMPE 440 (3.00)

Analog and Mixed Signal Circuits

Fundamentals of analog integrated circuits and their integration with digital circuits into application-specific integrated circuits (ASICs). The contents include principles and designs of operational amplifiers, analog multipliers, comparators, phase-lock-loops, A/D and D/A converters, voltage/frequency converters, DC/DC converters, regulators, communication circuits including: filters, transmitter/ receiver circuits modulators/ demodulators.
   Course ID: 052841
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: You must complete CMPE 314 with a C or better before taking this class.

CMPE 447 (3.00)

Analog Integrated Circuit Design

The course covers basic fundamentals of analog circuit design as they pertain to IC design. The focus will be on MOSFET technology, but BJTs will also be covered. Topics will include MOS and bipolar transistor devices along with their models and physical layout in ICs, current mirrors, single-transistor amplifiers, frequency response, differential amplifiers, feedback and stability, references, and noise analysis. The course will include design, simulation, and layout using industry-standard software.
   Course ID: 100245
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: You must complete CMPE 314 with a C or better before taking this class.

CMPE 450 (2.00)

Capstone I

The computer engineering capstone course is unique in that it comprises two separate modules called CMPE450 and CMPE451, with these modules being taken during the consecutive Fall and Spring semesters. The course is designed to allow students completing the computer engineering curriculum to engage in a complete project design experience. This will help them to integrate the various technical concepts they have learned in the prior courses they have engaged. The course aims to impart a foundation in team leadership and project management ability that will allow graduates to move with purpose, positively impacting the concerns they soon will join. Engineers in industry solve problems that simultaneously resolve budgetary, time, technical and sometimes social, ethical and environmental constraints. Students will enjoy an experience that closely matches the aforementioned environment.
   Course ID: 052842
   Consent: No Special Consent Required
   Components: Discussion, Lecture
   Attributes: Course Fee = $50.00
   Requirement Group: You must complete CMPE314 and CMPE311 and one of the following: CMPE 323 or CMPE330 or CMPE315 or CMPE415. A grade of C or better is required in all prerequisite classes before registering for Capstone I. Can be concurrently enrolled in CMPE311.

CMPE 451 (2.00)

Capstone II

The computer engineering capstone course is unique in that it comprises two separate modules called CMPE 450 and CMPE 451, with these modules being taken during the consecutive Fall and Spring semesters. The course is designed to allow students completing the computer engineering curriculum to engage in a complete project design experience. This will help them to integrate the various technical concepts they have learned in the prior courses they have engaged. The course aims to impart a foundation in team leadership and project management ability that will allow graduates to move with purpose, positively impacting the concerns they soon will join. Engineers in industry solve problems that simultaneously resolve budgetary, time, technical and sometimes social, ethical and environmental constraints. Students will enjoy an experience that closely matches the aforementioned environment.
   Course ID: 052843
   Consent: No Special Consent Required
   Components: Discussion, Lecture
   Attributes: Course Fee = $50.00
   Requirement Group: You must complete CMPE450 and CMPE311 with a C or better.

CMPE 485 (3.00)

Introduction to Communication Networks

An introduction to the fundamentals of communication and computer networking. Topics include: transmissions, WDM, circuit and packet switching, data link and medium-access technologies, X.25, frame relays, ISDN, xDSL, cable modem, SONET, ATM, TCP/IP, routing techniques and quality of services (QoS).
   Course ID: 052845
   Consent: No Special Consent Required
   Components: Lecture

CMPE 486 (3.00)

Mobile Radio Communications

This course provides a technical introduction to mobile radio telephony. Topics include: the evolution of mobile radio communications, transforming signal representation between time and frequency domains, allocation and assignment of communication channels for cellular phones, signal modulation techniques and wireless networks. An in-depth study of the GSM and IS-95 CDMA cellular phone systems also will be presented.
   Course ID: 052846
   Consent: No Special Consent Required
   Components: Lecture
   Requirement Group: You must complete CMSC 313 or CMPE 212 and MATH 152.

CMPE 491 (3.00)

Special Topics in Computer Engineering

Special Topics in Computer Engineering to be announced. This course is repeatable for credit.
   Course ID: 052847
   Consent: No Special Consent Required
   Components: Lecture
   Topics: Digital Signal Process, Mobile Radio Telephony, Spec Topics In Comp Engr, Communications Systems, Spec Topics In Comp Eng, Sensor Networks, Comp Arith Alg/VLSI Real, Embedded Systems, Wireless Sensor Networks, Robotics, Spec Topic In Comp Engr, Wearable Computing, Prog Embedded Systems, Intro Network Security, Nanoelectronics For Cmpe, Computer Arithmetic, Comp Arith Algor Implem, Biomed Electronics, Intro to Engn Math & Computation, Advanced Computer Arithmetic A, Intro to Quantum Mechanics for EE, Advanced FPGA Design, Mixed Signal Design II, Probabilistic Models, Data Intensive Computing, Biosensor Technology, Communications Systems, Medical Imaging, Embedded Systems and FPGAs, Advanced Math for Engineers, Ultra Low Power Bioelectronics & Mixed Sig Sys, Data Driven SP, Biomedical Microsystems, DSP Hardware, Low Power Bioelectronics

CMPE 499 (1.00 - 4.00)

Independent Study in Computer Engineering

A student may enroll in this course to study computer engineering topics that are not available in a regular course. The student and the faculty member supervising the independent study must determine the objectives of the project, the number of credits to be earned and the evaluation criteria for the project. Students are limited to two independent study courses in computer engineering. Variable credit course is repeatable.
   Course ID: 052848
   Consent: Department Consent Required
   Components: Independent Study