The University of Maryland Department of Electrical and Computer Engineering

Search
 
» INFO FOR:   Prospective Students | Current Students | Alumni | Industry & Government | Faculty & Staff | Family | Media
 
 
 
 
 
 
 
 
 
  The A. James Clark School of Engineering

Directory

ECE Webmail

Help Desk




Computer Engineering Courses


CMSC 132 Object-Oriented Programming II (4 credits)

Course Description
This is a second programming course for Computer Science majors with a focus on object-oriented programming. The course provides an introduction to the use of computers to solve problems using software engineering principles. Design, build, test, and debug medium-size software systems and learn to use relevant tools. Use object-oriented methods to create effective and efficient problem solutions. Use and implement application programming interfaces (APIs). Programming done in Java.

Prerequisite(s)
CMSC 131 with a grade of C or better.

Corequisite(s)
CMSC 250

Textbook and any Other Required Material
Modern Software Development Using Java, Paul Tymann & Michael Schneider, Thompson (2004)
http://www.course.com/catalog/product.cfm?isbn=0-534-38449-8
Java Precisely, Peter Sestoft, MIT Press (2002)
http://mitpress.mit.edu/catalog/item/default.asp?tid=8816&ttype=2

Course Objectives

Topics Covered
Object-oriented software development
Software life cycle
Requirements & specifications
Designing objects & classes
Testing & code coverage
Unified Modeling Language (UML)
Programming paradigms
Design patterns
Algorithms & data structures
Asymptotic efficiency
Lists, stacks, queues
Trees, tries, heaps
Sets, maps, graphs
Recursion
Programming skills
Java collection framework
Networking
Threads, synchronization
GUIs
Exceptions

Class/lab Schedule
3 hours of lecture, 2 hours of recitation

Contribution of the Course to Meet the Professional Component
One and a half years of engineering topics.

Relationship of Course to Program Objectives
(a) an ability to apply knowledge of mathematics, science, and engineering
SIGNIFICANT
Appreciation of mathematical induction through use of recursion in programming languages; use of algebra to learn how expressions are calculated in programming languages; use of arithmetic operations of programming languages.

(b) an ability to design and conduct experiments, as well as to analyze and interpret data
SIGNIFICANT
testing and de-bugging programs

(c) an ability to design a system, component, or process to meet desired needs
SIGNIFICANT
write programs to meet specific design criteria

(e) an ability to identify, formulate, and solve engineering problems
SOME
See (c). Students learn arrays add link-lists; evaluation of tradeoffs and disadvantages of each to know which one is most applicable in each circumstance.

(f) an understanding of professional and ethical responsibility
SOME
Students are expected to work alone, learn appropriate skills alone. They must become proficient individually before they work in teams in the upper level courses. Students discuss professional responsibility where miscalculations can have dangerous consequences.

(h) the broad education necessary to understand the impact of engineering solutions in a global and societal context
MODERATE
Proficiency individually to become team members; society driven by computers and knowledge of programming needed and central to every facet of society.

(i) a recognition of the need for, and an ability to engage in life-long learning
MODERATE
Students learn basic programming languages and problem solving techniques to learn other languages quickly.

(j) a knowledge of contemporary issues
MODERATE
Discussion of contemporary issues such as Mars probe- careful testing is necessary; understanding of intellectual property rights.

(k) an ability to use the techniques, skills, and modern engineering tools necessary for engineering practice
SIGNIFICANT
Increasing proficiency in Unix operating systems and utilities

Persons who prepared this syllabus and date of preparation
Fawzi Emad, Spring 2005



CMSC 212 Introduction to Low-Level Programming Concepts (4 credits)

Course Description
This course introduces many of the concepts that lie behind software, such as hardware, memory layout management, and operating systems. It explains how these concepts affect the design of software systems. This course provides a transition from the Java environment of the preceding two courses to programming in C.

Prerequisite(s)
CMSC 132 (with a grade of C or higher), Corequisite: CMSC 250 (or equivalent).

Textbook and any Other Required Material
Pointers on C, Reek, Addison-Wesley 1998.

Course Objectives
A good working knowledge of how to program in the C programming language.
Understanding how to write program with explicit memory allocation and de-allocation.
An introduction of how to write systems programs.

Topics Covered
Introduction: Moving from Java to C
Pointers and memory management
I/O
Libraries and linking
Program measurement
Primitive data representation
Array representation
Implementation of object-oriented concepts
Multi-language support

Class/lab Schedule
Three hours lecture; two hours recitation

Contribution of the Course to Meet the Professional Component
One and one-half years of engineering topics.

Relationship of Course to Program Objectives
(a) an ability to apply knowledge of mathematics, science, and engineering
SIGNIFICANT
Concepts of recursion are used, strongly tied to proof by induction and used for efficient problems solving; basic algebra used to determine run-time of many applications.

(b) an ability to design and conduct experiments, as well as to analyze and interpret data
MODERATE
Students must create their own test data and evaluate their output is correct.

(c) an ability to design a system, component, or process to meet desired needs
SOME
Final project requires students to make design decisions as many valid determinations exist.

(e) an ability to identify, formulate, and solve engineering problems
SIGNIFICANT
Students are shown multiple concrete structures to implement a specific abstract structure (such as a graph). They learn the advantages/disadvantage between them to enable them to choose the most appropriate concrete structure for a given application and domain.

(f) an understanding of professional and ethical responsibility
SOME
In reusing code, students must retest or be assured code works; give credit to source of code (if code doesn't work, the originator is known).

(g) an ability to communicate effectively
SOME
Students' email and office visits must be short, well articulated and to the point in order to receive sufficient and appropriate help.

(h) the broad education necessary to understand the impact of engineering solutions in a global and societal context
SOME
Class work demonstrates real world applicability.

(i) a recognition of the need for, and an ability to engage in life-long learning
MODERATE
Object-oriented concepts are taught, with knowledge that they are useful in learning new languages; students learn data structures and algorithms that are taught as examples and it is imperative that they realize that there are better ones, more appropriate for context.

(j) a knowledge of contemporary issues
SOME
Discussion of restructuring of information holding data structures being a challenge in a real-time 24/7 environment.

(k) an ability to use the techniques, skills, and modern engineering tools necessary for engineering practice.
SIGNIFICANT
Object oriented concepts, algorithms and data structures are fundamental engineering tools.

Persons who prepared this syllabus and date of preparation
Dr. J. Hollingsworth, Spring 2005



CMSC 250 Discrete Structures (4 credits)

Course Description
Fundamental mathematical concepts related to computer science, including finite and infinite sets, relations, functions, and propositional logic. Introduction to other techniques, modeling and solving problems in computer science. Introduction to permutations, combinations, graphs, and trees with selected applications.

Prerequisite(s)
MATH 141 and CMSC131

Textbook and any Other Required Material
Discrete Mathematics with Applications, third edition, Susanna Epp, Brooks/Cole- Thomson Learning, 2004

Course Objectives

Topics Covered
Propositional logic, circuits, and predicate logic
Elementary number theory
Summations, recurrences, and mathematical induction
Sets, Venn diagrams, Cartesian products, powersets
Counting and combinations
Functions and the pigeonhole principle
Relations, reflexivity, symmetry, and transitivity
Graph theory

Class/lab Schedule
3 hours of lecture and 2 hours of discussion

Contribution of the Course to Meet the Professional Component
One and one-half years of engineering topics.

Relationship of Course to Program Objectives
an ability to apply knowledge of mathematics, science, and engineering
SIGNIFICANT
Use of Boolean logic to design circuits.

(d) an ability to function on multi-disciplinary teams
SIGNIFICANT
Students work in teams of 4 to solve problems.

(e) an ability to identify, formulate, and solve engineering problems
SOME
Designing circuits for well-defined tasks.

(f) an understanding of professional and ethical responsibility
SOME
Professor discusses importance of academic integrity and explains the repercussions of cheating on homework

(g) an ability to communicate effectively
SOME
Homework and exams are also graded on the basis of clarity

Persons who prepared this syllabus and date of preparation
Larry Herman, Spring 2005



CMSC 330 Organization of Programming Languages (3 credits)

Course Description
The semantics of programming languages and their run-time organization. Several different models of languages are discussed, including procedural (e.g., C, Pascal), functional (e.g., ML., LISP), rule-based (e.g., Prolog), and object-oriented (e.g., C++, Smalltalk). Run-time structures, including dynamic versus static scope rules, storage for strings, arrays, records, and object inheritance are explored.

Prerequisite(s)
CMSC 214 and CMSC 250 (with a grade of C or better)

Textbook and any Other Required Material
Programming Languages: Design and Implementation (Fourth Edition) by T. Pratt and M. Zelkowitz, Prentice Hall (2001)

Course Objectives
Primary: Understand the structure of programming languages and the features built into various languages that make them suitable for solving certain problems.
Secondary: Learn several programming languages that exhibit characteristics representative from the various class of languages. This semester you will be responsible for: C++ (which you should already know), Java, ML, and Perl.
Languages: Processors for all the languages we will use are available on the detective cluster (dc.umd.edu):
For Java enter the command java.
For Perl, enter the command perl.
For C++, enter the command cpp.
For ML, add the following to your .cshrc:
alias sml "/software/sml/110/bin/sml-full"
This will allow you to invoke ML every time you log onto the system. To start ML, enter the command sml.

Topics Covered

Class/lab Schedule
Two hours of lecture and two hours of laboratory

Contribution of the Course to Meet the Professional Component
One and one-half years of engineering topics.

Relationship of Course to Program Objectives
an ability to apply knowledge of mathematics, science, and engineering
SIGNIFICANT
Students use discrete math to characterize programming languages

(c) an ability to design a system, component, or process to meet desired needs
SIGNIFICANT
Students are required to develop solutions to real world problems (i.e. build an airline reservation system).

(e) an ability to identify, formulate, and solve engineering problems
SIGNIFICANT
See c) above

(f) an understanding of professional and ethical responsibility
SOME
Students understand that plagiarism is similar to misrepresenting their skills.

(i) a recognition of the need for, and an ability to engage in life-long learning
MODERATE
Students learn the underpinnings of programming languages, which allows them to learn future languages.

(j) a knowledge of contemporary issues
MODERATE
Impact of languages on the web, e-commerce and communication.

Persons who prepared this syllabus and date of preparation
Dr. Zelkowitz, Fall 2002



CMSC 351 Algorithms (3)

Course Description
A systematic study of the complexity of some elementary algorithms related to sorting, graphs and trees, and combinatorics.

Prerequisite(s)
Grades of C or better in CMSC 212 (or CMSC 214) and CMSC 250.
http://www.cs.umd.edu/Ugrad/Courses.shtml

Textbook and any Other Required Material
Introduction to Algorithms, Cormen, Leiserson, Rivest, Stein; McGraw-Hill and MIT Press, Second Edition, 2001

Course Objectives

Topics Covered
Introduction
Growth of Functions
Summations
Recurrences
Heapsort
Quicksort
Sorting in Linear Time
Medians and Order Statistics
Graphs and Trees
Sorting Networks
String Matching
Brief Introduction to NP-completeness

Class/lab Schedule
Three hours of lecture

Contribution of the Course to Meet the Professional Component
One and one-half years of engineering topics.

Relationship of Course to Program Objectives
(a) an ability to apply knowledge of mathematics, science, and engineering
SIGNIFICANT
Calculus, induction, summation notations, and elementary matrix manipulation are combined to analyze algorithms

(c) an ability to design a system, component, or process to meet desired needs
SIGNIFICANT
Ability to design and build algorithms to meet certain needs

(e) an ability to identify, formulate, and solve engineering problems
SIGNIFICANT
Ability to solve problems related to algorithm design (i.e., sorting, data structures, shortest path problems).

(g) an ability to communicate effectively
SOME
Exams are essay-types and answers must be well explained

(j) a knowledge of contemporary issues
SOME
Provides background for cryptography and the analytical reasoning which can be used in evaluate contemporary issues.

(k) an ability to use the techniques, skills, and modern engineering tools necessary for engineering practice
MODERATE
Proficiency in MATLAB

Persons who prepared this syllabus and date of preparation
Clyde Kruskal, Summer 2005



CMSC 412 Operating Systems (4)

Course Description
A hands-on introduction to operating systems, including multiprogramming, communication and synchronization, memory management, IO subsystems, and resource scheduling polices. The laboratory component consists of constructing a small kernel, including functions for device IO, multi-tasking, memory management, dynamic linking and loading, socket-driven, window management.

Prerequisite(s)
Grades of C or better in CMSC 311 or ENEE 350 and CMSC 330, or a grade of C or better in CMSC 400.
http://www.cs.umd.edu/Ugrad/Courses.shtml

Textbook and any Other Required Material
Operating System Concepts  7th Edition or newer,  Siberschatz, Galvin and Gagne, John Wiley , 2005

Course Objectives
An in-depth understanding of how an operating system manages resources in a computer and provides programmers with a machine and device independent interface.  The emphasis of this class will be on operating system concepts. Running examples will be drawn from contemporary OS’s including UNIX, Windows, and Linux

Topics Covered
Introduction to operating systems (1 week)
Concurrent processes (2 weeks)
Kernel implementation techniques (1 week)
CPU scheduling (1 week)
Memory management (2 weeks)
File and I/O systems (2 weeks)
Security and protection (1 week)
Networking and distributed systems (2 weeks)
Objects and naming (1 week)
Window and display services (1 week)

Class/lab Schedule
Three hours of lecture and one hour of laboratory each week.

Contribution of the Course to Meet the Professional Component
One and a half years of engineering topics.

Relationship of Course to Program Objectives
(c) an ability to design a system, component, or process to meet desired needs
SIGNIFICANT
Ability to design a system of concurrent software components to meet the desired goal of providing a virtual user-friendly machine over "bare hardware"
(e) an ability to identify, formulate, and solve engineering problems
SIGNIFICANT
Ability to take imprecise specifications of operating system components and develop complete implementations from those specifications
(j) a knowledge of contemporary issues
SIGNIFICANT
Knowledge of contemporary issues in operating systems, such as security, access rights, robustness, and the Internet
(k) an ability to use the techniques, skills, and modern engineering tools necessary for engineering practice
SIGNIFICANT
Ability to take imprecise specifications of operating system components and develop complete implementations from those specifications

Persons who prepared this syllabus and date of preparation
Dr. Ashok Agrawala, Spring 2005



CMSC 414 Computer and Network Security (3 credits)

Course Description
An introduction to the topic of security in the context of computer systems and networks. Identify, analyze, and solve network-related security problems in computer systems. Fundamentals of number theory, authentication, and encryption technologies, as well as the practical problems that have to be solved in order to make those technologies workable in a networked environment, particularly in the wide-area Internet environment.

Prerequisite(s)
Grades of C or better in CMSC 311 or ENEE 350 and CMSC 330.
http://www.cs.umd.edu/Ugrad/Courses.shtml

Textbook and any Other Required Material
Security in Computing, 3rd edition" (by Pfleeger and Pfleeger)
"Network Security: Private Communication in a Public World, 2nd edition" (by Kaufman, Perlman, and Speciner).

Course Objectives
Students will
acquire broad knowledge of security techniques;
learn to apply security techniques to a real distributed application.

Topics Covered
1. Number theory
2. Public and secret key cryptography (including RSA and DSS)
3. Authentication (including Kerberos)
4. Electronic mail, including PGP and X.400, IP security
5. Electronic cash
6. Language-based mechanisms (Java, Perl, PLAN)
7. Mobile code and code signing

Class/lab Schedule
Three hours of lecture per week

Contribution of the Course to Meet the Professional Component
One and a half years of engineering topics.

Relationship of Course to Program Objectives
(a) an ability to apply knowledge of mathematics, science, and engineering
SIGNIFICANT
application of number theory to cryptology

(c) an ability to design a system, component, or process to meet desired needs
MODERATE
programming project applies security at all levels (design/analyze)

(e) an ability to identify, formulate, and solve engineering problems
MODERATE
see c) above

(f) an understanding of professional and ethical responsibility
SIGNIFICANT
the importance of security, and the responsibility of network administrators and other trusted parties not to abuse their privileges

(g) an ability to communicate effectively
SOME
students’ critiques of other students’ work must be well written.

(h) the broad education necessary to understand the impact of engineering solutions in a global and societal context
SOME
protecting individuals’ privacy is essential in this information age.

(i) a recognition of the need for, and an ability to engage in life-long learning
SOME
tools and techniques change, with a trend towards distributed schemes; this is a dynamic field and professionals need to keep abreast of changes

(j) a knowledge of contemporary issues
SOME
see h) above

(k) an ability to use the techniques, skills, and modern engineering tools necessary for engineering practice.
SIGNIFICANT
proficiency in Java.

Persons who prepared this syllabus and date of preparation
P. Keleher, 12/9/99



CMSC 417 Computer Networks (3 credits)

Course Description
Computer networks and architectures. The OSI model including discussion and examples of various network layers. A general introduction to existing network protocols. Communication protocol specification, analysis, and testing.

Prerequisite(s)
Grades of C or better in CMSC 311, CMSC 330, and CMSC 351.
http://www.cs.umd.edu/Ugrad/Courses.shtml

Textbook and any Other Required Material
Computer Networking: A Top-Down Approach Featuring the Internet. by James Kurose and Keith Ross, Addison Wesley | http://www.awl.com/kurose-ross

Course Objectives
This class provides an introduction to computer networking. It covers basic networking concepts and algorithms, focussing on the Internet. The objective is an in-depth understanding of the TCP/IP protocol suite, datagram routing, congestion control, intra- and inter-domain routing, quality-of-service support, etc..

Topics Covered
1.Introduction to data communications
2.The physical layer
3.Framing, error detection and correction
4.Channel allocation
5.Routing and congestion control algorithms
6.Internetworking
7.Transport protocols
8.Network security and administration
9.Applications (SMTP, HTTP, NNTP)

Class/lab Schedule
Three hours of lecture each week.

Contribution of the Course to Meet the Professional Component
One and a half years of engineering topics.

Relationship of Course to Program Objectives
(c) an ability to design a system, component, or process to meet desired needs
SIGNIFICANT
Ability to design a system of concurrent software components to meet the desired goal of providing a virtual computer network over "bare socket"
(e) an ability to identify, formulate, and solve engineering problems
SIGNIFICANT
Ability to take imprecise specifications of networking components and develop complete implementations from those specifications
(j) a knowledge of contemporary issues
SIGNIFICANT
Knowledge of contemporary issues in operating systems, such as security, access rights, robustness, and the Internet
(k) an ability to use the techniques, skills, and modern engineering tools necessary for engineering practice
SIGNIFICANT
Ability to take imprecise specifications of computer networks and develop complete implementations from those specifications.

Persons who prepared this syllabus and date of preparation
A. Udaya Shankar, Spring 2005



CMSC 420, Data Structures

Course Description
Description, properties, and storage allocation of data structures including lists and trees. Algorithms for manipulating structures. Applications from areas such as data processing, information retrieval, symbol manipulation, and operating systems.

Prerequisite(s)
A grade of C or better in MSC 330 and CMSC 351.
http://www.cs.umd.edu/Ugrad/Courses.shtml

Textbook and any Other Required Material
H. Samet. The Design and Analysis of Spatial Data Structures, Addison Wesley, 1989.
H. Samet. Notes on Data Structures.
D. E. Knuth. The Art of Computer Programming, Vol. 1: Fundamental Algorithms,
Addison Wesley.

Course Objectives
Understand:
the practical aspects of advanced data structures used in modern applications;
multi-dimensional data structures used in geometric applications;
data structures for data based applications;
data structures for artificial intelligence, programming languages and operating systems.

Topics Covered
Sequential allocation (1 lecture)
Linked lists (1 lecture)
Trees (2 lectures)
Lists and garbage collection (1 lecture)
Multilinked structures and dynamic storage allocation (2 lectures)
Heapsort and quicksort (1 lecture)
Sequential, binary and digital searching (1 lecture)
B-trees (1 lecture)
Hashing (3 lectures)
Introduction to LISP (6 lectures)
Plane-Sweep and rectangle intersection problems (2-3 lectures)
Winged edge data Structures (1 lecture)
MX-CIF quadtrees (2 lectures)
Hashing (3 lectures)
Special topics: multimedia data structures (1 lecture)

Class/lab Schedule
3 hours lecture

Contribution of the Course to Meet the Professional Component
One and one-half years of engineering topics, to include engineering sciences and engineering design appropriate to the student’s field of study

Relationship of Course to Program Objectives
(a) an ability to apply knowledge of mathematics, science, and engineering
SIGNIFICANT
Analyze algorithms to measure their efficiency

(c) an ability to design a system, component, or process to meet desired needs
MODERATE
Students are required to extend or modify theoretical results to match problem constraints

(e) an ability to identify, formulate, and solve engineering problems
SIGNIFICANT
Solve complex programming projects

(f) an understanding of professional and ethical responsibility
MODERATE
Students often need to use others’ code to complete a specific project. They are required to register (cite) the individual’s code (not to represent it as their own).

(h) the broad education necessary to understand the impact of engineering solutions in a global and societal context
SOME
Students need to have enough of a foundation in the abstract to identify current problem being addressed.

(i) a recognition of the need for, and an ability to engage in life-long learning
SOME
Concepts useful in future applications such as handling locational information

(j) a knowledge of contemporary issues
SOME
Combine established techniques and new paradigms to improve existing solutions and to solve previously open problems.

(k) an ability to use the techniques, skills, and modern engineering tools necessary for engineering practice.
SIGNIFICANT
Apply methods learned in database design

Persons who prepared this syllabus and date of preparation
Michelle Hugue, 6/13/00



CMSC 421 Introduction to Artificial Intelligence (3 credits)

Course Description
Areas and issues in artificial intelligence, including search, inference, knowledge representation, learning, vision, natural languages, expert systems, robotics. Implementation and application of programming languages (e.g., Lisp, Prolog, Smalltalk), programming techniques (e.g., pattern matching, discrimination networks), and control structures (e.g., agendas, data dependencies).

Prerequisite(s)
CMSC 330 and CMSC 251 or CMSC 420 (A grades of C or better in either). http://www.cs.umd.edu/Ugrad/Courses.shtml

Textbook and any Other Required Material
S. Russell and P. Norvig, Artificial Intelligence, A Modern Approach, 2nd edition.
Paul Graham, ANSI Common Lisp

Course Objectives
This course is an introduction to artificial intelligence. It has two emphases: 9(i) to give an overview of the discipline of AI as a whole and (ii) to develop acquaintance with some of the basic programming techniques employed in the field.

Topics Covered
Introduction and overview (0.5 weeks)
Lisp programming methods (3.5 weeks)
Basic and intermediate Lisp programming lexical closures, macros, other advanced features
Pattern matching, associative databases
Problem Solving
Heuristic search. A* algorithm, game trees
First-order predicate calculus (FOPC), clause form, resolution
Introduction to prolog and relation to FOPC
Knowledge representation: frames, semantic nets, etc.
Applied AI: expert systems, natural language processing.
Machine learning (3 weeks)\\Symbolic methods, neural networks, and genetic algorithms.
Material chosen by instructor (2 weeks)

Class/lab Schedule
3 hours lecture

Contribution of the Course to Meet the Professional Component
One and one-half years of engineering topics.

Relationship of Course to Program Objectives
(a) an ability to apply knowledge of mathematics, science, and engineering
SIGNIFICANT

(e) an ability to identify, formulate, and solve engineering problems
MODERATE
Students are shown multiple concrete structures to implement a specific abstract structure (such as a graph). They learn the advantages/disadvantage between them to enable them to choose the most appropriate concrete structure for a given application and domain.

(f) an understanding of professional and ethical responsibility
MODERATE
In reusing code, students must retest or be assured code works; give credit to source of code (if code doesn't work, the originator is known).

(h) the broad education necessary to understand the impact of engineering solutions in a global and societal
context
MODERATE

(j) a knowledge of contemporary issues
MODERATE

(k) an ability to use the techniques, skills, and modern engineering tools necessary for engineering practice.
SIGNIFICANT

Persons who prepared this syllabus and date of preparation
Dana Nau, Spring 2005



CMSC 422 Robot Programming (3 credits)

Course Description
An examination of programming issues involved in creating autonomous robots, which can interact with their environments in "intelligent" ways. Topics include traditional robotics, behavior-based robotics, sensor processing, sensor-based control, programming robotic behaviors. Team programming project. Note: this course cannot be taken for credit in the computer science graduate program.

Prerequisite(s)
CMSC 214 and permission of department (A grade of C or better)
http://www.cs.umd.edu/Ugrad/Courses.shtml

Textbook and any Other Required Material
R. Murphy, An Introduction to AI Robotics, MIT Press

Course Objectives
Students will learn how to program robotics applications through a series of lectures and demos and through a set of programming assignments using simulated and real robots. These parts will be a combination of electronics, Lego$^{TM$ and electrical parts.

Topics Covered
Introduction to robotics and intelligent control
Traditional robotics\\ Kinematics, dynamics, control intelligent control
Behavior-based robotics\\ Subsumption architecture, reactive behaviors, behavioral composition, goal-based reasoning
Sensor processing\\ Sensor-based control, shaft encoders
Programming robotic behaviors\\ sensor control, multiprocessing (sensor fusion), effector control, programming complex behaviors
Beyond C\\ Behavior Language, Lisp-based approaches

Class/lab Schedule
3 hours lecture

Contribution of the Course to Meet the Professional Component
One and one-half years of engineering topics.

Relationship of Course to Program Objectives

(a) an ability to apply knowledge of mathematics, science, and engineering
SIGNIFICANT

(b) an ability to design and conduct experiments, as well as to analyze and interpret data
SIGNIFICANT

(c) an ability to design a system, component, or process to meet desired needs
SIGNIFICANT

(e) an ability to identify, formulate, and solve engineering problems
SIGNIFICANT

(f) an understanding of professional and ethical responsibility
MODERATE

(g) an ability to communicate effectively
MODERATE

(h) the broad education necessary to understand the impact of engineering solutions in a global and societal
context
MODERATE

(i) a recognition of the need for, and an ability to engage in life-long learning
NONE

(j) a knowledge of contemporary issues
MODERATE

(k) an ability to use the techniques, skills, and modern engineering tools necessary for engineering practice.
SIGNIFICANT

Persons who prepared this syllabus and date of preparation
James Hendler, Spring 2002



CMSC 424 Data Base Design (3 credits)

Course Description
Motivation for the database approach as a mechanism for modeling the real world. Review of the three popular data models: relational, network and hierarchical. Comparison of permissible structures, integrity constraints, storage strategies and query facilities. Theory of database design logic

Prerequisite(s)
CMSC 420 (a grade of C or better). CMSC 450 is recommended.
http://www.cs.umd.edu/Ugrad/Courses.shtml

Textbook and any Other Required Material
Korth and Silberschatz, Database System Concepts, McGraw-Hill Book Company, 1986. Ullman, Principles of Database and Knowledge-Base Systems, Vol. I, Computer Science Press, 1988

Course Objectives

Topics Covered
1. Database System Architecture ( 1 week)\\ ANSI/SPARC Architecture; data abstraction; external, conceptual, and internal schemata; data independence; data definition and data manipulation languages.
2. Data models (10 weeks)\\ Entity-relationship, relational, network, hierarchical, and logic data models data structures, integrity constraints, and operations for each data model; relational query languages: SQL, algebra, calculus.
3. Theory of Database Design (2 weeks) Functional dependencies; normal forms: 1NF, 2NF, 3NF, and Boyce-Codd NF; information loss.
4. Query Optimization (1 week) Equivalence of expressions, algebraic manipulation; optimization of selections and joins.
5. Storage Strategies (1 week) Indices, B-trees, hashing.

Class/lab Schedule
3 hours of lecture

Contribution of the Course to Meet the Professional Component
One and one-half years of engineering topics.

Relationship of Course to Program Objectives

(a) an ability to apply knowledge of mathematics, science, and engineering
SIGNIFICANT

(g) an ability to communicate effectively
MODERATE

(j) a knowledge of contemporary issues
MODERATE

(k) an ability to use the techniques, skills, and modern engineering tools necessary for engineering practice.
SIGNIFICANT

Persons who prepared this syllabus and date of preparation
S. Chawathe, Spring 2005

CMSC 426 Image Processing (3 credits)

Course Description
An introduction to basic techniques of analysis and manipulation of pictorial data by computer. Image input/output devices, image processing software, enhancement, segmentation, property measurement, Fourier analysis. Computer encoding, processing and analysis of curves.

Prerequisite(s)
A grade of C or better in CMSC 420.
http://www.cs.umd.edu/Ugrad/Courses.shtml

Textbook and any Other Required Material
Rrecommended: Introductory Techniques for 3-D Computer Vision, by Trucco and Verri,  Prentice Hall, 1998.

Course Objectives
Understand the mathematical foundations of image processing and computer vision;
Develop programming skills to implement complete computer vision systems.

Topics Covered
1. Binary vision systems
2. Grey scale vision systems
3. 3-D Vision
4. Motion and navigation
5. Color

Class/lab Schedule
3 hours of lecture per week

Contribution of the Course to Meet the Professional Component
One and a half years of engineering topics.

Relationship of Course to Program Objectives
(a) an ability to apply knowledge of mathematics, science, and engineering
SIGNIFICANT
application of linear algebra, calculus, geometry and statistics to image analysis

(b) an ability to design and conduct experiments, as well as to analyze and interpret data
MODERATE
students develop their own evaluation procedures for image processing

(c) an ability to design a system, component, or process to meet desired needs
MODERATE
Students design projects to meet performance requirements (e.g. classification accuracy).

(e) an ability to identify, formulate, and solve engineering problems
MODERATE
students must develop their own image analysis algorithms

(g) an ability to communicate effectively
SIGNIFICANT
detailed reports are required for every project.

(j) a knowledge of contemporary issues
SOME
discussion on current applications of vision and image processing; guest lecturers detail the use of image processing in their work.

(k) an ability to use the techniques, skills, and modern engineering tools necessary for engineering practice.
SIGNIFICANT
students employ current techniques and modern program development environments in their projects.

Persons who prepared this syllabus and date of preparation
L. Davis, 1/4/00



CMSC 427 Computer Graphics (3 credits)

Course Description
An introduction to the principles of computer graphics. This includes an introduction to graphics displays and systems, introduction to the mathematics of affine and projective transformations, perspective, curve and surface modeling, algorithms for hidden-surface removal, color models, methods for modeling illumination, shading, and reflection.

Prerequisite(s)
MATH 240 and CMSC 420.
http://www.cs.umd.edu/Ugrad/Courses.shtml

Textbook and any Other Required Material
Required: Computer Graphics with OpenGL, Hearn and Baker, Third Edition, Prentice Hall
Recommended: OpenGL 1.4 Programming Guide: The Official Guide to Learning OenGL, Version 1.4, Forth Edition, by OpenGL Architecture Review Board, Shreiner, Woo, Neider, Davis; Addison Wesley

Course Objectives

Topics Covered
Introduction
Graphics displays and Open GL
Geometric Objects
Geometric Transformations
Projection
Display – Scan Conversion
Texture
Color and Transparency
Sampling and Filtering
Midterm
Midterm recap
Culling, Depth cues and Collisions
Visibility Determination
Illumination, Shading
Ray Tracing
Shadows
Global Illumination
Modeling
Interpolation and approximation
Rendering
Image-Based Rendering
Animation
Conclusions

Class/lab Schedule
3 hours of lecture

Contribution of the Course to Meet the Professional Component
One and one-half years of engineering topics.

Relationship of Course to Program Objectives

(a) an ability to apply knowledge of mathematics, science, and engineering
SIGNIFICANT

(g) an ability to communicate effectively
MODERATE

(k) an ability to use the techniques, skills, and modern engineering tools necessary for
engineering practice.
SIGNIFICANT

Persons who prepared this syllabus and date of preparation
David Jacobs, Spring 2005



CMSC 430 Theory of Language Translation (3 credits)

Course Description
Formal translation of programming languages, program syntax and semantics. Finite state recognizers and regular grammars. Context free parsing techniques such as recursive descent, precedence, LL(k), and LR(k). Code generation, improvement, syntax directed translation schema.

Prerequisite(s)
A grade of C or better in CMSC 330 or CMSC 400.
http://www.cs.umd.edu/Ugrad/Courses.shtml

Textbook and any Other Required Material
Engineering a compiler, by K. Cooper and L. Torczon (required) Morgan Kaufmann, 2004, ISBN - 1-55860-698-X

Course Objectives
This course focuses on compilation techniques needed to translate programs written in a standard programming language into executable code on microprocessor architectures. Program analysis and optimization techniques are presented in class lectures. Programming projects provide experience with implementation issues and allow students to develop programming and software engineering skills.
Course has two major objectives:
A formal treatment of the theory of context free languages, as applied to compiler design. Most of the mid-term and final exams will be on this formal theory.
Implementation of a compiler.

Topics Covered

Class/lab Schedule
Three hour lecture

Contribution of the Course to Meet the Professional Component
One and one-half years of engineering topics.

Relationship of Course to Program Objectives

(a) an ability to apply knowledge of mathematics, science, and engineering
SIGNFICANT

(b) an ability to design and conduct experiments, as well as to analyze and interpret data
SIGNIFICANT

(c) an ability to design a system, component, or process to meet desired needs
SIGNIFICANT

(e) an ability to identify, formulate, and solve engineering problems
SIGNIFICANT

(f) an understanding of professional and ethical responsibility
SOME

(g) an ability to communicate effectively
MODERATE

(i) a recognition of the need for, and an ability to engage in life-long learning
MODERATE

(j) a knowledge of contemporary issues
MODERATE

(k) an ability to use the techniques, skills, and modern engineering tools necessary for engineering practice.
SIGNIFICANT

Persons who prepared this syllabus and date of preparation
Marvin Zelkowitz, Spring 2004



CMSC 433 Programming Language Technologies and Paradigms (3 credits)

Course Description
Programming language technologies (e.g., object-oriented programming), their implementations and use in software design and implementation.

Prerequisite(s)
A grade of C or better in CMSC 330.
http://www.cs.umd.edu/Ugrad/Courses.shtml

Textbook and any Other Required Material
Bruce Eckel, Thinking in Java (3rd Edition), Prentice Hall, 2003.

Course Objectives

Topics Covered
Java Review
Subtyping and Inheritance
Dynamic Dispatch
Polymorphism and Downcasting
Objects versus References
Programming Abstractions, Techniques and Tools
Development Principles
Debugging
Assertions/Invariants
Testing
Object-Oriented Design Patterns
UML
Object invariants
Class design
Patterns: State, Template, Visitor, Decorator, Observer, ...
Refactoring
Philosophy
Refactoring patterns
Concurrency
Intro to Concurrency
Event-based programming
Event processing model
Java NIO
Threads
Java threads
Java memory model
Synchronization: locking (synchronized) and signaling (wait/notify)
Design forces (safety, liveness/deadlock, performance, reusability)
Threaded programming patterns
Distributed Programming with Java RMI
Other topics

Class/lab Schedule
Three hours lecture

Contribution of the Course to Meet the Professional Component
One and one-half years of engineering topics.

Relationship of Course to Program Objectives
(a) an ability to apply knowledge of mathematics, science, and engineering
SIGNIFICANT

(b) an ability to design and conduct experiments, as well as to analyze and interpret data
SIGNIFICANT

(c) an ability to design a system, component, or process to meet desired needs
SIGNIFICANT

(e) an ability to identify, formulate, and solve engineering problems
SOME

(i) a recognition of the need for, and an ability to engage in life-long learning
MODERATE

(j) a knowledge of contemporary issues
MODERATE

(k) an ability to use the techniques, skills, and modern engineering tools necessary for engineering practice.
SIGNIFICANT

Persons who prepared this syllabus and date of preparation
Jeff Foster, Spring 2005




CMSC 434 Introduction to Human-Computer Interaction (3 credits)

Course Description
Human factors issues in the development of software, the use of database systems, and the design of interactive systems. Science base (theories, models, usability studies, and controlled experimentation), and software engineering with user interface development environments. Issues include: programming and command languages; menus, forms, and direct manipulation; graphical user interfaces, computer-supported cooperative work, information search and visualization; input/output devices; and display design.

Prerequisite(s)
A grade of C or better in CMSC 330; and PSYC 100.
http://www.cs.umd.edu/Ugrad/Courses.shtml

Textbook and any Other Required Material
Recommended:
Designing the User Interface: Strategies for Effective Human-Computer Interaction, 3rd Edition, Shneiderman [Addison-Wesley], 1998.Bringing Design to Software, Terry Winograd (Editor) et al, [Addison-Wesley], 1996.

Course Objectives

Topics Covered
Overview
The Past and the Future
Principles for Design
Understanding users and their tasks
Designing with the user
Basic human factors
Designing visual interfaces
Interface technology
Implementing GUIs
Evaluation and experimental design

Class/lab Schedule
Three hours of lecture

Contribution of the Course to Meet the Professional Component
One and one-half years of engineering topics.

Relationship of Course to Program Objectives

(a) an ability to apply knowledge of mathematics, science, and engineering
SIGNIFICANT

(e) an ability to identify, formulate, and solve engineering problems
SOME

(f) an understanding of professional and ethical responsibility
SIGNIFICANT

(g) an ability to communicate effectively
SIGNIFICANT

(h) the broad education necessary to understand the impact of engineering solutions in a global and societal context
SIGNIFICANT

(i) a recognition of the need for, and an ability to engage in life-long learning
SOME

(j) a knowledge of contemporary issues
SIGNIFICANT

(k) an ability to use the techniques, skills, and modern engineering tools necessary for engineering practice.
SIGNIFICANT

Persons who prepared this syllabus and date of preparation
Dr. Guimbretiere, Spring 2005



CMSC 435 Software Engineering (3 credits)

Course Description
State of the art technique in software design and development. Laboratory experience in applying the techniques covered. Structured design, structured programming, top-down design and development, segmentation and modularization techniques, iterative enhancement, design and code inspection techniques, correctness, and chief-programmer teams. The development of a large software project.

Prerequisite
A grade of C or better in CMSC 412 or 417 or 420 or 430 or 433
http://www.cs.umd.edu/Ugrad/Courses.shtml

Textbook and any Other Required Material
S. Pfleger, Software Engineering and Practice, Prentice Hall, 1998.

Course Objectives

Topics Covered
1. Motivation --- why SE instead of ad hoc techniques?
2. Terminology; introduction to process models and configuration management
3. Basic principles of quality assurance and risk reduction
4. Requirements capture and analysis
5. Specification and design techniques
6. Implementation issues
7. Unit test techniques
8. System integration and testing techniques
9. Correctness; verification
10. Support tools and automated systems; CASE tools
11. Measurement and costing issues; Planning and scheduling
12. Standards
13. Human factors
14. Maintenance

Class/lab Schedule
3 hours of lecture per week

Contribution of the Course to Meet the Professional Component
One and a half years of engineering topics.

Relationship of Course to Program Objectives

(a) an ability to apply knowledge of mathematics, science, and engineering
SIGNIFICANT
Students study and employ software engineering processes to develop a class project in team-based activities.

(b) an ability to design and conduct experiments, as well as to
analyze and interpret data
SIGNIFICANT
Students create risk reduction assessments on class projects then perform tailored prototyping experiments to determine key design issues in the class project.

(c) an ability to design a system, component, or process to meet
desired needs
SIGNIFICANT
This is the essence of the class project for the semester.

(d) an ability to function on multi-disciplinary teams
SIGNIFICANT
Class projects are team-based, which draw on a variety of skills by virtue of serving as a capstone course.

(e) an ability to identify, formulate, and solve engineering problems
SIGNIFICANT
See (c) above

(f) an understanding of professional and ethical responsibility
MODERATE
Understanding the social impact of design decisions in software applications is covered in lectures on requirements capture and analysis. Students are required to complete an ethical case study paper.

(g) an ability to communicate effectively
SIGNIFICANT
This is the essence of our team based approach to teaching software engineering, as underscored by requirements capture in the project. Students must give an oral and written report of their work.

(h) the broad education necessary to understand the impact of engineering solutions in a global and societal context
MODERATE
See (f) above

(i) a recognition of the need for, and an ability to engage in life-long learning
MODERATE
Lectures cover specific techniques that computing professionals need to know in order to stay current and also refine their skills.

(j) a knowledge of contemporary issues
SIGNIFICANT
Students prepare a weekly "in-the-news" report of technology developments.

(k) an ability to use the techniques, skills, and modern engineering tools necessary for engineering practice.
SIGNIFICANT
Various modern support tools are used; the software engineering paradigm is an integral component of modern computer engineering practice.

Persons who prepared this syllabus and date of preparation
J. Purtilo, Spring 2005

 

CMSC 451 Design and Analysis of Computer Algorithms (3 credits)

Course Description
Fundamental techniques for designing efficient computer algorithms, proving their correctness, and analyzing their complexity. General topics include sorting, selection, graph algorithms, and basic algorithm design paradigms (such as divide-and-conquer, dynamic programming and greedy algorithms), lower bounds and NP-completeness.

Prerequisite(s)
Grades of C or better in CMSC 214 and CMSC 351
http://www.cs.umd.edu/Ugrad/Courses.shtml

Textbook and any Other Required Material
Jon Kleinberg and _Eva Tardos, Algorithm Design, Addison-Wesley, to appear in 2005.

Course Objectives
This course presents the fundamental techniques for designing e_cient
computer algorithms, proving their correctness, and analyzing their complexity. General topics include graph algorithms, and basic algorithm design paradigms (such as divide-and-conquer, dynamic programming and greedy algorithms), lower bounds and NP-completeness

Topics Covered
Graph exploration
Greedy algorithms
Divide and Conquer algorithms:
Dynamic programming
String-type algorithms
Lower Bounds:
NP-completeness and Intractability
Approximation Algorithms
Randomized Algorithms

Class/lab Schedule
Three hours of lecture per week.

Contribution of the Course to Meet the Professional Component
One and a half years of engineering topics.

Relationship of Course to Program Objectives

(a) an ability to apply knowledge of mathematics, science, and engineering
SIGNIFICANT
Mathematics used in analyzing running times of algorithms; discrete mathematics and combinatorics are applied in proving the correctness of algorithms.

(b) an ability to design and conduct experiments, as well as to analyze and interpret
Data
MODERATE
Programming project is assigned which requires students to implement various algorithms and analyze their execution times empirically.

(e) an ability to identify, formulate, and solve engineering problems
MODERATE
See (b) above.

(g) an ability to communicate effectively
MODERATE
Students must be able to communicate their algorithm designs in a clear manner.

(i) a recognition of the need for, and an ability to engage in life-long learning
SOME
Students learn methods by which algorithms are designed and how to approach the design process to solve the next generation of algorithms.

(k) an ability to use the techniques, skills, and modern engineering tools necessary for
engineering practice.
SIGNIFICANT
Students learn the most common algorithm design techniques, including dynamic programming, depth-first search, and greedy methods.

Persons who prepared this syllabus and date of preparation
A. Srinivasan, Spring 2005



CMSC 452 Elementary Theory of Computation (3 credits)

Course Description
Introduction to alternative theoretical models of computation, types of automata, and their relations to formal grammars and languages.

Prerequisite(s)
Grades of C or better in CMSC 214 and CMSC 251
http://www.cs.umd.edu/Ugrad/Courses.shtml

Textbook and any Other Required Material
J.E. Hopcroft and J.D. Ullman, Introduction to Automata Theory, Languages, and Computation, Addison-Wesley, 1979.
Lewis and Papadimitriou, Elements of the Theory of Computation, Prentice-Hall, 1981

Course Objectives
Introduction of formal models of computing, types of automata, and their relations to formal grammars and languages

Topics Covered
Mathematical Preliminaries
Induction, relations, cardinality, diagonalization.
Regular languages and Finite Automata
Deterministic finite acceptors (DFA) and regular expressions, equivalence of languages accepted by a DFA and regular languages, closure properties of regular languages, nondeterministic finite acceptors (NDFA) and their equivalence with DFA, nonregular languages and the pumping lemma.
Context free grammars and context free languages (CFL)
Pushdown acceptors (PDA), equivalence of CFL and languages accepted by PDA, closure properties of CFL, non-CFL and the pumping lemma for CFL, recognition of CFL and parsing.
Primitive recursive functions, Turing Machines, other models of computation
Universal Turing machines, Church's Thesis, the halting problem for Turing machines, unsolvable problems, recursive and recursively enumerable sets.

Class/lab Schedule
Three hours of lecture

Contribution of the Course to Meet the Professional Component
One and one-half years of engineering topics.

Relationship of Course to Program Objectives

(a) an ability to apply knowledge of mathematics, science, and engineering
SIGNIFICANT

(e) an ability to identify, formulate, and solve engineering problems
SOME

(g) an ability to communicate effectively
SOME

(i) a recognition of the need for, and an ability to engage in life-long learning
SOME

(j) a knowledge of contemporary issues
SOME

(k) an ability to use the techniques, skills, and modern engineering tools necessary for engineering practice.
SIGNIFICANT

Persons who prepared this syllabus and date of preparation
Dr. W. Gasarch, Spring 2005

↑ Back to Top


© Copyright 2005-2006, University of Maryland
University of Maryland A. James Clark School of Engineering Department of Electrical and Computer Engineering