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

University Libraries

ECE Site Feedback





Course Descriptions

CMSC132 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.

Pre-Requisite
CMSC131 with a grade of C or better

Co-Requisite
MATH141

Textbook(s)

  • Data Structures: Abstraction and Design Using Java, Elliot B. Koffman and Paul A. T. Wolfgang, Wiley (2010)
  • Java Precisely, Peter Sestoft, MIT Press (2002)

Other Required Material(s)

  • lecture notes provided

Syllabus Prepared By and Date
Dr. Plane, Spring 2011.

Course Objectives

  1. Students become comfortable with the object oriented paradigm.
  2. Students become more proficient in the Java Language.
  3. Students become familiar with all stages of the software life cycle: definition, implementation, debugging, testing and modification.

Topics Covered

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

Class/Lab Schedule
3 hours lecture, 2 hours recitation

Relationship of Course Objects to Program Outcomes

SIGNIFICANT This is an outcome/theme that frequently reoccurs in a course and is clearly present more than 50% of the time/effort in all sections of the course.
MODERATE This is an outcome that occurs one or more times in a course, but definitely less than 50% of the time. Still, the emphasis is such that it would be reasonable to assess at least one dimension of this outcome in this course if necessary.
LITTLE This is an outcome that should occur at least once in a class, irrespective of who teaches it, but it would not be reasonable to assess the outcome due to a lack of required depth of coverage across all sections of the course.
NONE Absolutely, positively not required to be covered in a class.
  1. Ability to apply knowledge of mathematics, science, and engineering
    • Relevant Content: 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.
      Method of Evaluation: Projects and Exams
      Level of Coverage: SIGNIFICANT
  2. Ability to design and conduct experiments, as well as analyze and interpret data
    • Relevant Content: Testing and de-bugging programs.
      Method of Evaluation: Projects and Exams
      Level of Coverage: SIGNIFICANT
  3. Ability to design a system, component, or process to meet desired needs
    • Relevant Content: Write programs to meet specific design criteria
      Method of Evaluation: Projects
      Emphasis: SIGNIFICANT
  4. Ability to identify, formulate, and solve engineering problems
      Relevant Content: 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.
      Method of Evaluation: Projects
      Level of Coverage: LITTLE
  5. Understanding of professional and ethical responsibility
      Relevant Content: 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.
      Method of Evaluation: Projects
      Level of Coverage: LITTLE
  6. Broad education necessary to understand the impact of engineering solutions in a global and societal context
      Relevant Content: Proficiency individually to become team members; society driven by computers and knowledge of programming needed and central to every facet of society.
      Method of Evaluation: Class Discussions
      Level of Coverage: MODERATE
  7. Recognition of the need for, and an ability to engage in life-long learning
      Relevant Content: Students learn basic programming languages and problem solving techniques to learn other languages quickly.
      Method of Evaluation: Projects and Class Discussions
      Emphasis: MODERATE
  8. Knowledge of contemporary issues
      Relevant Content: Discussion of contemporary issues such as Mars probe- careful testing is necessary; understanding of intellectual property rights
      Method of Evaluation: Class Discussions
      Emphasis: MODERATE
  9. Ability to use the techniques, skills, and modern engineering tools necessary for engineering practice
      Relevant Content: Increasing proficiency in the use of IDEs, testing and debugging tools
      Method of Evaluation: Projects
      Emphasis: SIGNIFICANT

↑ Back to Top

CMSC212 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.

Pre-Requisite
CMSC132 (with a grade of C or higher).

Co-Requisite
CMSC250 (or equivalent).

Textbook(s)

  • Pointers on C, Reek, Addison–Wesley 1998; ISBN 0–673–99986–6

Other Required Material(s)

  • Provided class materials

Syllabus Prepared By and Date
Mr. Herman and Dr. Plane, Spring 2011.

Course Objectives

  1. A good working knowledge of how to program in the C programming language. 
  2. Understanding how to write program with explicit memory allocation and de-allocation. 
  3. An introduction of how to write systems programs.
Topics Covered
  1. Introduction:  Moving from Java to C
  2. Pointers and memory management
  3. I/O
  4. Libraries and linking
  5. Program measurement
  6. Primitive data representation
  7. Array representation
  8. Implementation of object-oriented concepts
  9. Multi-language support

Class/Lab Schedule
3 hours lecture, 2 hours recitation

Relationship of Course Objects to Program Outcomes

SIGNIFICANT This is an outcome/theme that frequently reoccurs in a course and is clearly present more than 50% of the time/effort in all sections of the course.
MODERATE This is an outcome that occurs one or more times in a course, but definitely less than 50% of the time. Still, the emphasis is such that it would be reasonable to assess at least one dimension of this outcome in this course if necessary.
LITTLE This is an outcome that should occur at least once in a class, irrespective of who teaches it, but it would not be reasonable to assess the outcome due to a lack of required depth of coverage across all sections of the course.
NONE Absolutely, positively not required to be covered in a class.
  1. Ability to apply knowledge of mathematics, science, and engineering
    • Relevant Content: 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.
      Method of Evaluation: Projects, Quizzes and Exams
      Level of Coverage: SIGNIFICANT
  2. Ability to design and conduct experiments, as well as analyze and interpret data
    • Relevant Content: Students must create their own test data and evaluate their output is correct.  One project also emphasizes determining the improvement in runtime so requires analysis of the numbers received from the system.
      Method of Evaluation: Projects
      Level of Coverage: MODERATE
  3. Ability to design a system, component, or process to meet desired needs
    • Relevant Content: Projects require students to make design decisions as many valid determinations exist.
      Method of Evaluation: Projects and Exams
      Emphasis: MODERATE
  4. Ability to identify, formulate, and solve engineering problems
      Relevant Content: 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
      Method of Evaluation: Projects, Quizzes and Exams
      Level of Coverage: SIGNIFICANT
  5. Understanding of professional and ethical responsibility
      Relevant Content: 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).
      Method of Evaluation: Class Discussion
      Level of Coverage: LITTLE
  6. Ability to communicate effectively
      Relevant Content: Students' email and office visits must be short, well articulated and to the point in order to receive sufficient and appropriate help
      Method of Evaluation: Projects
      Level of Coverage: LITTLE
  7. Broad education necessary to understand the impact of engineering solutions in a global and societal context
      Relevant Content: Class work demonstrates real world applicability
      Method of Evaluation: Class discussions
      Level of Coverage: LITTLE
  8. Recognition of the need for, and an ability to engage in life-long learning
      Relevant Content: Programming 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 also comparisons to Java so that generalizations across languages can be made
      Method of Evaluation: Projects, Class discussions and Exams
      Emphasis: SIGNIFICANT
  9. Knowledge of contemporary issues
      Relevant Content: Discussion of restructuring of information holding data structures being a challenge in a real-time 24/7 environment
      Method of Evaluation: Class Discussions
      Emphasis: LITTLE
  10. Ability to use the techniques, skills, and modern engineering tools necessary for engineering practice
      Relevant Content: Computer System concepts, algorithms and data structures are fundamental engineering tools
      Method of Evaluation: Projects, Exams and Quizzes
      Emphasis: SIGNIFICANT

↑ Back to Top

CMSC216 Introduction to Computer Systems, 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 in an IDE of the preceding two courses to programming in C in the UNIX environment.

Pre-Requisite
CMSC132 (with a grade of C or higher)

Co-Requisite
CMSC250 (or equivalent)

Textbook(s)

  • Computer Systems:A Programmer's Perspective 2nd Edition, Bryant & O'Hallaron, Prentice Hall, 2011. (required)
  • Pointers on C, Reek, Addison-Wesley 1998. (recommended)

Other Required Material(s)

  • Provided lecture notes and utilities

Syllabus Prepared By and Date
Dr. Plane, Spring 2011.

Course Objectives

  1. A good working knowledge of how to program in both C and Assembly languages. 
  2. An introduction of how to write systems programs including command-line arguments, redirecting of I/O and data bit manipulations.
  3. Understanding process management (forking processes and managing threads) and memory management (dynamic allocation and deallocation).
  4. Introduction to tools used on the UNIX system for editing, debugging, linking, testing and tracking programs and processes.
  5. Understand how different types of data are stored and how the stack is used to manage processes
Topics Covered
  1. Introduction:  Moving from Java to C
  2. Pointers and memory management
  3. I/O
  4. The preprocessor and makefiles
  5. Assembly language
  6. Process control: fork, dup2, etc.
  7. Function pointers
  8. Threads
  9. Libraries and linking
  10. Program measurement and optimization
  11. Primitive data and array representation

Class/Lab Schedule
3 hours lecture, 2 hours recitation

Relationship of Course Objects to Program Outcomes

SIGNIFICANT This is an outcome/theme that frequently reoccurs in a course and is clearly present more than 50% of the time/effort in all sections of the course.
MODERATE This is an outcome that occurs one or more times in a course, but definitely less than 50% of the time. Still, the emphasis is such that it would be reasonable to assess at least one dimension of this outcome in this course if necessary.
LITTLE This is an outcome that should occur at least once in a class, irrespective of who teaches it, but it would not be reasonable to assess the outcome due to a lack of required depth of coverage across all sections of the course.
NONE Absolutely, positively not required to be covered in a class.
  1. Ability to apply knowledge of mathematics, science, and engineering
    • Relevant Content: Concepts of recursion and data management are used along with basic algebra used to determine run-time of many applications
      Method of Evaluation: Projects and Exams
      Level of Coverage: SIGNIFICANT
  2. Ability to design and conduct experiments, as well as analyze and interpret data
    • Relevant Content: Students must create their own test data and evaluate their output is correct
      Method of Evaluation: Projects
      Level of Coverage: MODERATE
  3. Ability to design a system, component, or process to meet desired needs
    • Relevant Content: Final project requires students to make design decisions as many valid determinations exist
      Method of Evaluation: Projects and Exams
      Emphasis: SIGNIFICANT
  4. Ability to identify, formulate, and solve engineering problems
      Relevant Content: Students are shown multiple ways of storing and manipulating the same data. They learn the advantages/disadvantage between them to enable them to choose the most appropriate concrete structure for a given application and domain
      Method of Evaluation: Projects, Class discussion and Exams
      Level of Coverage: SIGNIFICANT
  5. Understanding of professional and ethical responsibility
      Relevant Content: 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).  They also must be familiar both with the different testing tools and the tracking of changes
      Method of Evaluation: Projects
      Level of Coverage: LITTLE
  6. Ability to communicate effectively
      Relevant Content: : Students' email and office visits must be short, well articulated and to the point in order to receive sufficient and appropriate help.  They also learn to question what other information might be necessary in order to successfully complete the projects
      Method of Evaluation: Projects
      Level of Coverage: LITTLE
  7. Broad education necessary to understand the impact of engineering solutions in a global and societal context
      Relevant Content: Class work demonstrates real world applicability
      Method of Evaluation: Projects and Class discussion
      Level of Coverage: LITTLE
  8. Recognition of the need for, and an ability to engage in life-long learning
      Relevant Content: The tools are introduced and students are given situations in which to apply those tools but with the idea that they need to continue to apply those tools in less controlled situations so that they become more familiar with them
      Method of Evaluation: Projects and Exams
      Emphasis: MODERATE
  9. Knowledge of contemporary issues
      Relevant Content: Discussion of restructuring of information holding data structures being a challenge in a real-time 24/7 environment
      Method of Evaluation: Class discussions
      Emphasis: LITTLE
  10. Ability to use the techniques, skills, and modern engineering tools necessary for engineering practice
      Relevant Content: Testing, Debugging, and timing analysis are fundamental to software engineering.  Algorithms and data structures are central to all programming
      Method of Evaluation: Projects and Exams
      Emphasis: SIGNIFICANT

↑ Back to Top

CMSC250 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.

Pre-Requisite
MATH141

Co-Requisite
None

Textbook(s)

  • Discrete Mathematics with Applications, third edition, Susanna Epp, Brooks/Cole- Thomson Learning, 2004.

Other Required Material(s)

  • Provided class materials

Syllabus Prepared By and Date
Drs. Plane and Golub, Spring 2011.

Course Objectives

See topics covered.

Topics Covered
  1. Propositional logic, circuits, and predicate logic 
  2. Elementary number theory
  3. Summations, recurrences, and mathematical induction
  4. Sets, Venn diagrams, Cartesian products, powersets
  5. Counting and combinations
  6. Functions and the pigeonhole principle
  7. Relations, reflexivity, symmetry, and transitivity
  8. Graph theory

Class/Lab Schedule
3 hours lecture, 2 hours reciation

Relationship of Course Objects to Program Outcomes

SIGNIFICANT This is an outcome/theme that frequently reoccurs in a course and is clearly present more than 50% of the time/effort in all sections of the course.
MODERATE This is an outcome that occurs one or more times in a course, but definitely less than 50% of the time. Still, the emphasis is such that it would be reasonable to assess at least one dimension of this outcome in this course if necessary.
LITTLE This is an outcome that should occur at least once in a class, irrespective of who teaches it, but it would not be reasonable to assess the outcome due to a lack of required depth of coverage across all sections of the course.
NONE Absolutely, positively not required to be covered in a class.
  1. Ability to apply knowledge of mathematics, science, and engineering
    • Relevant Content: Use of Boolean logic to design circuits
      Method of Evaluation: Exams, homework exercises and quizzes
      Level of Coverage: SIGNIFICANT
  2. Ability to function on a multi-disciplinary team
      Relevant Content: Students work in teams of 4 to solve problems
      Method of Evaluation: Lab exercises
      Level of Coverage: MODERATE
  3. Ability to identify, formulate, and solve engineering problems
      Relevant Content: Designing circuits for well-defined tasks
      Method of Evaluation: Lab exercises, homework exercises and exams
      Level of Coverage: LITTLE
  4. Understanding of professional and ethical responsibility
      Relevant Content: Professor discusses important of academic integrity and explains the repercussions of cheating on homework
      Method of Evaluation: Class discussion
      Level of Coverage: LITTLE
  5. Ability to communicate effectively
      Relevant Content: Homework and exams are also graded on the basis of clarity
      Method of Evaluation: Quizzes, homework exercises and Exams
      Level of Coverage: MODERATE

↑ Back to Top

CMSC330 Organization of Programming Languages, 3 credits

Course Description
A study of programming languages, including their syntax, semantics, and implementation. Several different models of languages are discussed, including procedural (e.g., C, Pascal), functional (e.g., ML, LISP, Scheme), rule-based (e.g., Prolog), and object-oriented (e.g., Java, C++, Smalltalk). Language features such as formal syntax, scoping and binding of variables, higher-order programming, typing and type polymorphism, and object inheritance are explored.

Pre-Requisite
CMSC216 and CMSC250 (with a grade of C or better)

Co-Requisite
None

Textbook(s)

  • Programming Languages: Design and Implementation (Fourth Edition) by T. Pratt and M. Zelkowitz, Prentice Hall (2001)

Other Required Material(s)

  • None

Syllabus Prepared By and Date
Drs. Foster and Plane, Spring 2011.

Course Objectives

  1. Primary: Understand the structure of programming languages and the features built into various languages that make them suitable for solving certain problems.
  2. Secondary: Learn several programming languages that exhibit characteristics representative from the various class of languages.
  3. Languages:
    Ruby
    OCaml
    Concurrency in Java
Topics Covered
  1. Administrative and course introduction (1 lecture)
  2. Scripting Languages (Ruby, 2 lectures)
    1. Implicit vs. explicit declarations
    2. Dynamic vs. static typing
    3. Text processing and string manipulation
  3. Regular expressions and finite automata (3 lectures)
  4. Context-free grammars (3 lectures)
  5. Functional programming (OCaml, 5 lectures)
    1. Lists and recursion
    2. Higher-order programming and closures
    3. Types and polymorphism
    4. Data types and pattern matching
    5. Modularity and abstraction
  6. Concurrency (5 lectures)
    1. Basics of multi-threaded programming
    2. Shared memory concurrency
    3. Message passing concurrency
    4. Design idioms and comparisons
  7. Environments, scoping, and binding (2 lectures)
    1. Functions and procedures
    2. Parameter passing mechanisms
    3. Dynamic vs. static scoping
    4. Run-time implementations
  8. Advanced Topics (2 lectures)
    1. Lambda Calculus
    2. Garbage collection and memory management
    3. Historical overview

Class/Lab Schedule
2 hours lecture, 2 hours laboratory

Relationship of Course Objects to Program Outcomes

SIGNIFICANT This is an outcome/theme that frequently reoccurs in a course and is clearly present more than 50% of the time/effort in all sections of the course.
MODERATE This is an outcome that occurs one or more times in a course, but definitely less than 50% of the time. Still, the emphasis is such that it would be reasonable to assess at least one dimension of this outcome in this course if necessary.
LITTLE This is an outcome that should occur at least once in a class, irrespective of who teaches it, but it would not be reasonable to assess the outcome due to a lack of required depth of coverage across all sections of the course.
NONE Absolutely, positively not required to be covered in a class.
  1. Ability to apply knowledge of mathematics, science, and engineering
    • Relevant Content: Students use discrete math to characterize programming languages.  Specific applications: Context free grammars and lambda calculus.
      Method of Evaluation: Exams
      Level of Coverage: SIGNIFICANT
  2. Ability to design a system, component, or process to meet desired needs
    • Relevant Content: Students are required to develop solutions to real world problems
      Method of Evaluation: Projects
      Emphasis: SIGNIFICANT
  3. Ability to identify, formulate, and solve engineering problems
      Relevant Content: See (c) above.
      Method of Evaluation: Projects and Exams
      Level of Coverage: SIGNIFICANT
  4. Understanding of professional and ethical responsibility
      Relevant Content: Students understand that plagiarism is similar to misrepresenting their skills.
      Method of Evaluation: Projects
      Level of Coverage: LITTLE
  5. Recognition of the need for, and an ability to engage in life-long learning
      Relevant Content: Students learn the underpinnings of programming languages, which allows them to learn future languages
      Method of Evaluation: Projects and Class discussions
      Emphasis: MODERATE
  6. Knowledge of contemporary issues
      Relevant Content: Impact of languages on the web, e-commerce and communication
      Method of Evaluation: Projects and Class discussions
      Emphasis: MODERATE

↑ Back to Top

CMSC351 Algorithms, 3 credits

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

Pre-Requisite
Grades of C or better in CMSC216 (or CMSC212) and CMSC250

Co-Requisite
None

Textbook(s)

  • Introduction to Algorithms - A Creative Approach, Udi Manber, Addison-Wesley, ISBN: 978-0-2-0112037-0

Other Required Material(s)

  • Problems on Algorithms, Second Edition, by Ian Parberry and William Gasarch, 2002, http://larc.unt.edu/ian/books/free/.

Syllabus Prepared By and Date
Drs. Hajiaghayi and Plane, Spring 2011.

Course Objectives

  1. Understand  the complexity of some elementary algorithms related to sorting, graphs and trees, and combinatorics.
  2. Be able to analyze algorithms using mathematical techniques to solve recurrences and summations.
  3. Be able to construct proofs about these analysis techniques
Topics Covered
  1. Introduction and review of proofs
  2. Review and Expansion of Induction Methods
  3. Growth of Functions
  4. Summations
  5. Recurrences
  6. Heapsort
  7. Quicksort
  8. Sorting in Linear Time
  9. Medians and Order Statistics
  10. Graphs and Trees
  11. Sorting Networks
  12. String Matching
  13. Brief Introduction to NP-completeness

Class/Lab Schedule
3 hours lecture

Relationship of Course Objects to Program Outcomes

SIGNIFICANT This is an outcome/theme that frequently reoccurs in a course and is clearly present more than 50% of the time/effort in all sections of the course.
MODERATE This is an outcome that occurs one or more times in a course, but definitely less than 50% of the time. Still, the emphasis is such that it would be reasonable to assess at least one dimension of this outcome in this course if necessary.
LITTLE This is an outcome that should occur at least once in a class, irrespective of who teaches it, but it would not be reasonable to assess the outcome due to a lack of required depth of coverage across all sections of the course.
NONE Absolutely, positively not required to be covered in a class.
  1. Ability to apply knowledge of mathematics, science, and engineering
    • Relevant Content: Calculus, induction, summation notations, and elementary matrix manipulation are combined to analyze algorithms
      Method of Evaluation: Homework assignments and Exams
      Level of Coverage: SIGNIFICANT
  2. Ability to design a system, component, or process to meet desired needs
    • Relevant Content: Ability to design and build algorithms to meet certain needs
      Method of Evaluation: Homework assignments and Exams
      Emphasis: SIGNIFICANT
  3. Ability to identify, formulate, and solve engineering problems
      Relevant Content: Ability to solve problems related to algorithm design (i.e. sorting, data structures, shortest path problems)
      Method of Evaluation: Homework assignments and Exams
      Level of Coverage: SIGNIFICANT
  4. Ability to communicate effectively
      Relevant Content: Exams are essay-types and answers must be well explained
      Method of Evaluation: Homework exercises
      Level of Coverage: LITTLE
  5. Knowledge of contemporary issues
      Relevant Content: Provides background for cryptography and the analytical reasoning which can be used in evaluate contemporary issues
      Method of Evaluation: Homework exercises and Exams
      Emphasis: LITTLE

↑ Back to Top

CMSC412 Operating Systems, 4 credits

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.

Pre-Requisite
Grades of C or better in (CMSC311 or ENEE350) and CMSC330.

Co-Requisite
None

Textbook(s)

  • Siberschatz, Galvin and Gagne. Operating System Concepts  7th Edition.  John Wiley: 2005.

Other Required Material(s)

  • Course lecture notes and handouts

Syllabus Prepared By and Date
Drs. Keleher and Plane, May 2011.

Course Objectives

  1. An in-depth understanding of how an operating system manages resources in a computer and provides programmers with a machine and device independent interface. 
  2. The emphasis of this class will be on operating system concepts.
  3. Running examples will be drawn from contemporary OS’s including UNIX, Windows, and Linux
Topics Covered
  1. Introduction to operating systems (1 week)
  2. Concurrent processes (2 weeks)
  3. Kernel implementation techniques (1 week)
  4. CPU scheduling (1 week)
  5. Memory management (2 weeks)
  6. File and I/O systems (2 weeks)
  7. Security and protection (1 week)
  8. Networking and distributed systems (2 weeks)
  9. Objects and naming (1 week)
  10. Window and display services (1 week)

Class/Lab Schedule
3 hours lecture, 2 hours recitation

Relationship of Course Objects to Program Outcomes

SIGNIFICANT This is an outcome/theme that frequently reoccurs in a course and is clearly present more than 50% of the time/effort in all sections of the course.
MODERATE This is an outcome that occurs one or more times in a course, but definitely less than 50% of the time. Still, the emphasis is such that it would be reasonable to assess at least one dimension of this outcome in this course if necessary.
LITTLE This is an outcome that should occur at least once in a class, irrespective of who teaches it, but it would not be reasonable to assess the outcome due to a lack of required depth of coverage across all sections of the course.
NONE Absolutely, positively not required to be covered in a class.
  1. Ability to design a system, component, or process to meet desired needs
    • Relevant Content: Ability to design a system of concurrent software components to meet the desired goal of providing a virtual user-friendly machine over "bare hardware”
      Method of Evaluation: projects
      Emphasis: SIGNIFICANT
  2. Ability to identify, formulate, and solve engineering problems
      Relevant Content: Ability to take imprecise specifications of operating system components and develop complete implementations from those specifications
      Method of Evaluation: Projects and Exams
      Level of Coverage: SIGNIFICANT
  3. Knowledge of contemporary issues
      Relevant Content: Knowledge of contemporary issues in operating systems, such as security, access rights, robustness, and the Internet
      Method of Evaluation: Exams
      Emphasis: SIGNIFICANT
  4. Ability to use the techniques, skills, and modern engineering tools necessary for engineering practice
      Relevant Content: Ability to take imprecise specifications of operating system components and develop complete implementations from those specifications
      Method of Evaluation: Projects
      Emphasis: SIGNIFICANT

↑ Back to Top

CMSC414 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.

Pre-Requisite
Grades of C or better in (CMSC311 or ENEE350) and CMSC330

Co-Requisite
None

Textbook(s)

  • Network Security: Private Communication in a Public World 2nd edition” (by Kaufman, Perlman, and Speciner)

Other Required Material(s)

  • None

Syllabus Prepared By and Date
Drs. Shankar and Plane, May 2011.

Course Objectives

  1. Acquire broad knowledge of security techniques.
  2. Learn to apply security techniques to a real distributed application
Topics Covered
  1. Number theory
  2. Public and secret key cryptography (including RSA and Diffie-Helman)
  3. Authentication protocols (including strong-password protocols, PFS, identity hiding)
  4. Authentication standards (including Kerberos, IPsec, IKE, SSL)

Class/Lab Schedule
3 hours lecture

Relationship of Course Objects to Program Outcomes

SIGNIFICANT This is an outcome/theme that frequently reoccurs in a course and is clearly present more than 50% of the time/effort in all sections of the course.
MODERATE This is an outcome that occurs one or more times in a course, but definitely less than 50% of the time. Still, the emphasis is such that it would be reasonable to assess at least one dimension of this outcome in this course if necessary.
LITTLE This is an outcome that should occur at least once in a class, irrespective of who teaches it, but it would not be reasonable to assess the outcome due to a lack of required depth of coverage across all sections of the course.
NONE Absolutely, positively not required to be covered in a class.
  1. Ability to apply knowledge of mathematics, science, and engineering
    • Relevant Content: Application of number theory to cryptology
      Method of Evaluation: Homework exercises and Exams
      Level of Coverage: MODERATE
  2. Ability to design a system, component, or process to meet desired needs
    • Relevant Content: Programming project applies security at all levels (design/analyze)
      Method of Evaluation: Projects and Exams
      Emphasis: MODERATE
  3. Ability to identify, formulate, and solve engineering problems
      Relevant Content: See (c) above
      Method of Evaluation: Homework exercises and Exams
      Level of Coverage: MODERATE
  4. Understanding of professional and ethical responsibility
      Relevant Content: The importance of security, and the responsibility of network administrators and other trusted parties not to abuse their privileges
      Method of Evaluation: Homework exercises and Exams
      Level of Coverage: SIGNIFICANT
  5. Ability to communicate effectively
      Relevant Content: Students’ critiques of other students’ work must be well written
      Method of Evaluation: Projects and Class discussion
      Level of Coverage: LITTLE
  6. Broad education necessary to understand the impact of engineering solutions in a global and societal context
      Relevant Content: Protecting individuals’ privacy is essential in this information age
      Method of Evaluation: Class discussion
      Level of Coverage: LITTLE
  7. Recognition of the need for, and an ability to engage in life-long learning
      Relevant Content: Tools and techniques change, with a trend towards distributed schemes; this is a dynamic field and professionals need to keep abreast of changes
      Method of Evaluation: Projects and Exams
      Emphasis: SOME
  8. Knowledge of contemporary issues
      Relevant Content: See (h) above
      Method of Evaluation: Class discussions
      Emphasis: LITTLE
  9. Ability to use the techniques, skills, and modern engineering tools necessary for engineering practice
      Relevant Content: Proficiency in Java
      Method of Evaluation: Projects
      Emphasis: SIGNIFICANT

↑ Back to Top

CMSC417 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

Pre-Requisite
Grades of C or better in CMSC330 and CMSC351

Co-Requisite
None

Textbook(s)

  • Computer Networks 5th Edition, Tanenbaum and Wetherall, Prentice Hall 2011. ISBN 0-13-212695-8

Other Required Material(s)

  • None

Syllabus Prepared By and Date
Drs. Agrawala and Plane, Spring 2011.

Course Objectives

  1. An introduction to computer networking
  2. Basic networking concepts and algorithms, focusing on the Internet
  3. In-depth understanding of the TCP/IP protocol suite, datagram routing, congestion control, intra- and inter-domain routing, quality of service
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 (DNS, SMTP, HTTP, Streaming and Multimedia protocols)

Class/Lab Schedule
3 hours lecture

Relationship of Course Objects to Program Outcomes

SIGNIFICANT This is an outcome/theme that frequently reoccurs in a course and is clearly present more than 50% of the time/effort in all sections of the course.
MODERATE This is an outcome that occurs one or more times in a course, but definitely less than 50% of the time. Still, the emphasis is such that it would be reasonable to assess at least one dimension of this outcome in this course if necessary.
LITTLE This is an outcome that should occur at least once in a class, irrespective of who teaches it, but it would not be reasonable to assess the outcome due to a lack of required depth of coverage across all sections of the course.
NONE Absolutely, positively not required to be covered in a class.
  1. Ability to design a system, component, or process to meet desired needs
    • Relevant Content: Ability to design a system of concurrent software components to meet the desired goal of providing a virtual computer network over "bare socket.”
      Method of Evaluation: Projects and Exams
      Emphasis: SIGNIFICANT
  2. Ability to identify, formulate, and solve engineering problems
      Relevant Content: Ability to take imprecise specifications of networking components and develop complete implementations from those specifications
      Method of Evaluation: Projects
      Level of Coverage: SIGNIFICANT
  3. Knowledge of contemporary issues
      Relevant Content: Knowledge of contemporary issues in operating systems, such as security, access rights, robustness, and the Internet
      Method of Evaluation: Class discussion
      Emphasis: SIGNIFICANT
  4. Ability to use the techniques, skills, and modern engineering tools necessary for engineering practice
      Relevant Content: Ability to take imprecise specifications of computer networks and develop complete implementations from those specifications
      Method of Evaluation: Projects
      Emphasis: SIGNIFICANT

↑ Back to Top

CMSC420 Data Structures, 3 credits

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.

Pre-Requisite
A grade of C or better in CMSC330 and CMSC351

Co-Requisite
None

Textbook(s)

  • A Practical Introduction to Data Structures and Algorithm Analysis Java Version Edition 3.2 (Shaffer --Required) available at http://people.cs.vt.edu/~shaffer/Book/JAVA3e20110520.pdf
  • Design and Analysis of Spatial Data Structures (Samet--Optional)
  • Foundations of Multidimensional and Metric Data Structures (Samet--Optional) Morgan Kaufmann, San Francisco, CA, 2006

Other Required Material(s)

  • None

Syllabus Prepared By and Date
Drs. Hugue and Plane, May 2011.

Course Objectives

  1. The practical aspects of advanced data structures used in modern applications;
  2. Multi-dimensional data structures used in geometric applications;
  3. Data structures for data based applications;
  4. Data structures for artificial intelligence, programming languages and operating systems
Topics Covered
  1. Sequential allocation (1 lecture)
  2. Linked lists (1 lecture)
  3. Trees (2 lectures)
  4. Lists and garbage collection (1 lecture)
  5. Multilinked structures and dynamic storage allocation (2 lectures)
  6. Heapsort and quicksort (1 lecture)
  7. Sequential, binary and digital searching (1 lecture)
  8. B-tree Family (2 lectures)
  9. Hashing (3 lectures)
  10. Huffman Coding (1 lecture)
  11. Winged edge data Structures (1 lecture)
  12. Spacial Structures (3-4 lectures)
  13. Amortized Analysis and Splay Trees (2-3 lectures)
  14. Binomial and Fibonacci Heaps (2 lectures)
  15. Special Topics: Multimedia and Custom Composite data structures (3 lectures)

Class/Lab Schedule
3 hours lecture

Relationship of Course Objects to Program Outcomes

SIGNIFICANT This is an outcome/theme that frequently reoccurs in a course and is clearly present more than 50% of the time/effort in all sections of the course.
MODERATE This is an outcome that occurs one or more times in a course, but definitely less than 50% of the time. Still, the emphasis is such that it would be reasonable to assess at least one dimension of this outcome in this course if necessary.
LITTLE This is an outcome that should occur at least once in a class, irrespective of who teaches it, but it would not be reasonable to assess the outcome due to a lack of required depth of coverage across all sections of the course.
NONE Absolutely, positively not required to be covered in a class.
  1. Ability to apply knowledge of mathematics, science, and engineering
    • Relevant Content: Analyze algorithms to measure their efficiency
      Method of Evaluation: Exams
      Level of Coverage: SIGNIFICANT
  2. Ability to design a system, component, or process to meet desired needs
    • Relevant Content: Students are required to extend or modify theoretical results to match problem constraints
      Method of Evaluation: Projects and Exams
      Emphasis: MODERATE
  3. Ability to identify, formulate, and solve engineering problems
      Relevant Content: Solve complex programming projects
      Method of Evaluation: Projects and Exams
      Level of Coverage: SIGNIFICANT
  4. Understanding of professional and ethical responsibility
      Relevant Content: 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).
      Method of Evaluation: Projects
      Level of Coverage: MODERATE
  5. Broad education necessary to understand the impact of engineering solutions in a global and societal context
      Relevant Content: Students need to have enough of a foundation in the abstract to identify current problem being addressed.
      Method of Evaluation: Class Discussion
      Level of Coverage: LITTLE
  6. Recognition of the need for, and an ability to engage in life-long learning
      Relevant Content: Concepts useful in future applications such as handling locational information.
      Method of Evaluation: Projects
      Emphasis: LITTLE
  7. Knowledge of contemporary issues
      Relevant Content: Combine established techniques and new paradigms to improve existing solutions and to solve previously open problems
      Method of Evaluation: Projects and Exams
      Emphasis: LITTLE
  8. Ability to use the techniques, skills, and modern engineering tools necessary for engineering practice
      Relevant Content: Apply methods used in database design
      Method of Evaluation: Projects and Exams
      Emphasis: SIGNIFICANT

↑ Back to Top

CMSC421 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).

Pre-Requisite
CMSC330 and CMSC351 (a grades of C or better in both)

Co-Requisite
None

Textbook(s)

  • Artificial Intelligence , 3rd edition,  S. Russell and P. Norvig, ,Prentice Hall, 2010.

Other Required Material(s)

  • None

Syllabus Prepared By and Date
Drs. Perlis and Plane, Spring 2011.

Course Objectives

  1. To give an overview of the discipline of AI as a whole.
  2. To develop acquaintance with some of the basic programming techniques employed in the field
Topics Covered
  1. Introduction and overview (0.5 weeks)
  2. Lisp programming methods (3.5 weeks)
    • Basic and intermediate Lisp programming lexical closures, macros, other advanced features
    • Pattern matching, associative databases
  3. 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.
  4. Machine learning (3 weeks)\\Symbolic methods, neural networks, and genetic algorithms.
  5. Material chosen by instructor (2 weeks)

Class/Lab Schedule
3 hours lecture

Relationship of Course Objects to Program Outcomes

SIGNIFICANT This is an outcome/theme that frequently reoccurs in a course and is clearly present more than 50% of the time/effort in all sections of the course.
MODERATE This is an outcome that occurs one or more times in a course, but definitely less than 50% of the time. Still, the emphasis is such that it would be reasonable to assess at least one dimension of this outcome in this course if necessary.
LITTLE This is an outcome that should occur at least once in a class, irrespective of who teaches it, but it would not be reasonable to assess the outcome due to a lack of required depth of coverage across all sections of the course.
NONE Absolutely, positively not required to be covered in a class.
  1. Ability to apply knowledge of mathematics, science, and engineering
    • Relevant Content: Design and implement software which applies software engineering concepts and practices
      Method of Evaluation: Projects and Exams
      Level of Coverage: SIGNIFICANT
  2. Ability to identify, formulate, and solve engineering problems
      Relevant Content: 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
      Method of Evaluation: Homework Projects
      Level of Coverage: MODERATE
  3. Understanding of professional and ethical responsibility
      Relevant Content: 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).
      Method of Evaluation: Projects
      Level of Coverage: MODERATE
  4. Broad education necessary to understand the impact of engineering solutions in a global and societal context
      Relevant Content: Applications of Artificial Intelligence are discussed
      Method of Evaluation: Class discussion and Exams
      Level of Coverage: MODERATE
  5. Knowledge of contemporary issues
      Relevant Content: Applications of Artificial Intelligence are discussed
      Method of Evaluation: Class discussions
      Emphasis: MODERATE
  6. Ability to use the techniques, skills, and modern engineering tools necessary for engineering practice
      Relevant Content: Implementations of Algorithms and languages used in artificial intelligence
      Method of Evaluation: Projects
      Emphasis: SIGNIFICANT

↑ Back to Top

CMSC424 Data Base Design, 3 credits

Course Description
Students are introduced to database systems and motivates the database approach as a mechanism for modeling the real world. An in-depth coverage of the relational model, logical database design, query languages, and other database concepts including query optimization, concurrency control; transaction management, and log based crash recovery. Distributed and Web database architectures are also discussed.

Pre-Requisite
CMSC330 and CMSC351 (a grade of C or better)

Co-Requisite
None

Textbook(s)

  • Database systems concepts. (6th ed.)  Silberschatz, Korth, Sudarshan, McGraw Hill, ISBN 0-07-352332-1

Other Required Material(s)

  • None

Syllabus Prepared By and Date
Drs. Pop and Plane, Spring 2011.

Course Objectives

  1. Introduce students to database systems and motivate the database approach as a mechanism for modeling the real world.
  2. Cover in depth the relational model, logical database design, SQL, and other database concepts including query optimization, concurrency control, transaction management, and log based crash recovery.
  3. Allow the students to complete a class project that requires the design, and implementation of a database application
Topics Covered
  1. Models for data representation
  2. SQL language
  3. Schema normalization
  4. Data storage
  5. Query processing and optimization
  6. Transactions, concurrency, and recovery
  7. Parallel/distributed databases
  8. Warehouses, data federation, data mining, and XML

Class/Lab Schedule
3 hours lecture

Relationship of Course Objects to Program Outcomes

SIGNIFICANT This is an outcome/theme that frequently reoccurs in a course and is clearly present more than 50% of the time/effort in all sections of the course.
MODERATE This is an outcome that occurs one or more times in a course, but definitely less than 50% of the time. Still, the emphasis is such that it would be reasonable to assess at least one dimension of this outcome in this course if necessary.
LITTLE This is an outcome that should occur at least once in a class, irrespective of who teaches it, but it would not be reasonable to assess the outcome due to a lack of required depth of coverage across all sections of the course.
NONE Absolutely, positively not required to be covered in a class.
  1. Ability to apply knowledge of mathematics, science, and engineering
    • Relevant Content: Analysis, design, and implementation of a database application
      Method of Evaluation: Project and Exams
      Level of Coverage: SIGNIFICANT
  2. Ability to design a system, component, or process to meet desired needs
    • Relevant Content: Analysis, design, and implementation of a database application, Models for data representation
      Method of Evaluation: Project, Homeworks, Exams
      Emphasis: SIGNIFICANT
  3. Ability to function on a multi-disciplinary team
      Relevant Content: Analysis, design, and implementation of a database application, Models for data representation
      Method of Evaluation: Project
      Level of Coverage: SIGNIFICANT
  4. Ability to identify, formulate, and solve engineering problems
      Relevant Content: Analysis, design, and implementation of a database application, Models for data representation
      Method of Evaluation: Project
      Level of Coverage: SIGNIFICANT
  5. Ability to communicate effectively
      Relevant Content: Group projects and presentation of those projects
      Method of Evaluation: Projects and related presentations
      Level of Coverage: SIGNIFICANT
  6. Recognition of the need for, and an ability to engage in life-long learning
      Relevant Content: Brought up in lectures throughout course
      Method of Evaluation: Homework assignments
      Emphasis: MODERATE
  7. Knowledge of contemporary issues
      Relevant Content: Databases in modern web based applications
      Method of Evaluation: Class discussion, Exams, and Project
      Emphasis: MODERATE
  8. Ability to use the techniques, skills, and modern engineering tools necessary for engineering practice
      Relevant Content: Use of a variety of tools and technologies to implement projects
      Method of Evaluation: Projects
      Emphasis: SIGNIFICANT

↑ Back to Top

CMSC426 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.

Pre-Requisite
A grade of C or better in CMSC420

Co-Requisite
None

Textbook(s)

  • Materials provided through the semester

Other Required Material(s)

  • None

Syllabus Prepared By and Date
Drs. Aloimonos and Plane, Spring 2011.

Course Objectives

  1. Understand the mathematical foundations of image processing and computer vision;
  2. Develop programming skills to implement complete computer vision systems
Topics Covered
  1. Introduction to image processing
  2. Image Formation
  3. Linear Algebra review
  4. Filtering
  5. Edge detection and Canny Edge detection
  6. Resampling
  7. Image Motion
  8. Statistics on Image Features
  9. Stereopsis
  10. Projective Geometry
  11. Epipolar Geometry
  12. Interpretation of Motion and 3D motion
  13. Shading and Texture
  14. Tracking with Kalman Filters

Class/Lab Schedule
3 hours lecture

Relationship of Course Objects to Program Outcomes

SIGNIFICANT This is an outcome/theme that frequently reoccurs in a course and is clearly present more than 50% of the time/effort in all sections of the course.
MODERATE This is an outcome that occurs one or more times in a course, but definitely less than 50% of the time. Still, the emphasis is such that it would be reasonable to assess at least one dimension of this outcome in this course if necessary.
LITTLE This is an outcome that should occur at least once in a class, irrespective of who teaches it, but it would not be reasonable to assess the outcome due to a lack of required depth of coverage across all sections of the course.
NONE Absolutely, positively not required to be covered in a class.
  1. Ability to apply knowledge of mathematics, science, and engineering
    • Relevant Content: Application of linear algebra, calculus, geometry, and statistics to image analysis.
      Method of Evaluation: Projects and Exams
      Level of Coverage: SIGNIFICANT
  2. Ability to design and conduct experiments, as well as analyze and interpret data
    • Relevant Content: Students develop their own evaluation procedures for image processing.
      Method of Evaluation: Projects
      Level of Coverage: MODERATE
  3. Ability to design a system, component, or process to meet desired needs
    • Relevant Content: Students design projects to meet performance requirements (e.g. classification accuracy).
      Method of Evaluation: Projects
      Emphasis: MODERATE
  4. Ability to identify, formulate, and solve engineering problems
      Relevant Content: Students must develop their own image analysis algorithms
      Method of Evaluation: Projects and Exams
      Level of Coverage: MODERATE
  5. Ability to communicate effectively
      Relevant Content: Detailed reports are required for every project
      Method of Evaluation: Projects
      Level of Coverage: SIGNIFICANT
  6. Knowledge of contemporary issues
      Relevant Content: Discussion on current applications of vision and image processing; guest lecturers detail the use of image processing in their work
      Method of Evaluation: Class discussions
      Emphasis: LITTLE
  7. Ability to use the techniques, skills, and modern engineering tools necessary for engineering practice
      Relevant Content: Students employ current techniques and modern program development environments in their projects
      Method of Evaluation: Projects
      Emphasis: SIGNIFICANT

↑ Back to Top

CMSC427 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.

Pre-Requisite
MATH240 and CMSC420, both with a C or better

Co-Requisite
None

Textbook(s)

  • Fundamentals of Computer Graphics, 3rd Ed, Peter Shirley and Steve Marschner, 2009. ISBN: 978-1-56881-469-8
  • OpenGL Programming Guide: The Official Guide to Learning OpenGL, (6th Edition), by OpenGL Architecture Review Board, et al., Addison-Wesley, 2007. (Also known as "the Red Book".) Version 1.1 is available online, and contains most of the basic OpenGL features that you will need. (Recommended)

Other Required Material(s)

  • Class materials provided

Syllabus Prepared By and Date
Drs. Mount and Plane, Spring 2011.

Course Objectives

  1. Understand the principles of computer graphics.
  2. Consider methods for modeling 3-dimensional objects and efficiently generating photorealistic renderings on color raster graphics devices.
  3. Understand how the various elements that underlie computer graphics (algebra, geometry, algorithms and data structures, optics, and photometry) interact in the design of graphics software systems

Topics Covered

  • Introduction
  • Graphics programming
  • Geometric programming
  • 3-d transformations and Perspective
  • Illumination and Shading
  • Using Images
  • Scan Conversion
  • Ray tracing
  • Hidden-surface removal
  • Color
  • Modeling
  • Curves and Surfaces
  • Shading languages

Class/Lab Schedule
3 hours lecture

Relationship of Course Objects to Program Outcomes

SIGNIFICANT This is an outcome/theme that frequently reoccurs in a course and is clearly present more than 50% of the time/effort in all sections of the course.
MODERATE This is an outcome that occurs one or more times in a course, but definitely less than 50% of the time. Still, the emphasis is such that it would be reasonable to assess at least one dimension of this outcome in this course if necessary.
LITTLE This is an outcome that should occur at least once in a class, irrespective of who teaches it, but it would not be reasonable to assess the outcome due to a lack of required depth of coverage across all sections of the course.
NONE Absolutely, positively not required to be covered in a class.
  1. Ability to apply knowledge of mathematics, science, and engineering
    • Relevant Content: Application of graphical algorithms and the mathematics that underpins it
      Method of Evaluation: Homework assignments, Projects and Exams
      Level of Coverage: SIGNIFICANT
  2. Ability to design and conduct experiments, as well as analyze and interpret data
    • Relevant Content: see (a)
      Method of Evaluation: Homework assignments, Projects and Exams
      Level of Coverage: MODERATE
  3. Ability to communicate effectively
      Relevant Content: Presentations of projects developed
      Method of Evaluation: Projects
      Level of Coverage: MODERATE
  4. Ability to use the techniques, skills, and modern engineering tools necessary for engineering practice
      Relevant Content: see (a)
      Method of Evaluation: Homework assignments, Projects and Exams
      Emphasis: SIGNIFICANT

↑ Back to Top

CMSC430 Theory of Language Translation, 3 credits

Course Description
Formal translation of programming languages, program syntax and semantics. Context-free parsing techniques such as LL(1) and LR(1). Code generation, analysis, and improvement techniques. Instruction scheduling, register allocation, and parallelization

Pre-Requisite
A grade of C or better in CMSC330

Co-Requisite
None

Textbook(s)

  • Engineering a compiler, by K. Cooper and L. Torczon Morgan Kaufmann, 2004, ISBN - 1-55860-698-X (recommended)

Other Required Material(s)

  • None

Syllabus Prepared By and Date
Drs. Tseng and Plane, Spring 2011.

Course Objectives

  1. This course focuses on compilation techniques needed to translate programs written in a standard programming language into executable code on microprocessor architectures.
  2. Program analysis and optimization techniques are presented in class lectures.
  3. Programming projects provide experience with implementation issues and allow students to develop programming and software engineering skills
Topics Covered
  1. Understand lexical analysis and parsing, intermediate representations
  2. Be able to perform program analysis and optimization.
  3. Be able to implement code generation algorithms

Class/Lab Schedule
3 hours lecture

Relationship of Course Objects to Program Outcomes

SIGNIFICANT This is an outcome/theme that frequently reoccurs in a course and is clearly present more than 50% of the time/effort in all sections of the course.
MODERATE This is an outcome that occurs one or more times in a course, but definitely less than 50% of the time. Still, the emphasis is such that it would be reasonable to assess at least one dimension of this outcome in this course if necessary.
LITTLE This is an outcome that should occur at least once in a class, irrespective of who teaches it, but it would not be reasonable to assess the outcome due to a lack of required depth of coverage across all sections of the course.
NONE Absolutely, positively not required to be covered in a class.
  1. Ability to apply knowledge of mathematics, science, and engineering
    • Relevant Content: Be able to learn high-level principles and algorithms in compiler design and apply them to both exam questions and software implementations
      Method of Evaluation: Exams, quizzes, programming projects
      Level of Coverage: SIGNIFICANT
  2. Ability to design and conduct experiments, as well as analyze and interpret data
    • Relevant Content: Be able to examine and interpret outputs of different compiler components in order to ensure correctness
      Method of Evaluation: Programming projects
      Level of Coverage: MODERATE
  3. Ability to design a system, component, or process to meet desired needs
    • Relevant Content: Be able to apply high-level principles and algorithms in implementing different components of a compiler, as specified by the programming project requirements
      Method of Evaluation: Programming projects
      Emphasis: SIGNIFICANT
  4. Ability to identify, formulate, and solve engineering problems
      Relevant Content: Be able to apply high-level principles and algorithms in implementing a compiler
      Method of Evaluation: Programming projects
      Level of Coverage: SIGNIFICANT
  5. Understanding of professional and ethical responsibility
      Relevant Content: Be able to discuss programming projects without sharing code
      Method of Evaluation: Programming projects
      Level of Coverage: LITTLE
  6. Ability to communicate effectively
      Relevant Content: Be able to present understanding of both high-level principles and concrete algorithms in compiler design in response to exam questions
      Method of Evaluation: Exams, quizzes
      Level of Coverage: LITTLE
  7. Recognition of the need for, and an ability to engage in life-long learning
      Relevant Content:Discuss how goals of compilers have evolved over time
      Method of Evaluation: Exams, quizzes
      Level of Coverage: LITTLE
  8. Knowledge of contemporary issues
      Relevant Content: Discuss future impact of compilers in response to changes in hardware developments and application needs
      Method of Evaluation: Exams
      Emphasis: LITTLE
  9. Ability to use the techniques, skills, and modern engineering tools necessary for engineering practice
      Relevant Content: Use modern programming languages (Java) and software development tools (Eclipse) to implement a compiler
      Method of Evaluation: Programming projects
      Emphasis: SIGNIFICANT

↑ Back to Top

CMSC433 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.

Pre-Requisite
A grade of C or better in CMSC330

Co-Requisite
None

Textbook(s)

  • Java Concurrency in Practice, ISBN 978-0-3-2134960-6, by Brian Goetz

Other Required Material(s)

  • Provided class materials

Syllabus Prepared By and Date
Drs. Hicks and Plane, Spring 2011.

Course Objectives

  1. Understand concurrent and distributed programming.
  2. Be able to identify pitfalls and difficulties in writing such programs and explore design patterns and best practices for avoiding them.
  3. Gain more experience working with the Java programming language, but also consider other languages, such as Scala or Erlang, as time permits, since these languages are being increasingly used to write scalable web services
Topics Covered
  1. Java Review
  2. Programming Abstractions, Techniques and Tools
  3. Object-Oriented Design Patterns
  4. Refactoring
  5. Concurrency
  6. Threads
  7. Distributed Programming with Java RMI
  8. Other topics

Class/Lab Schedule
3 hours lecture

Relationship of Course Objects to Program Outcomes

SIGNIFICANT This is an outcome/theme that frequently reoccurs in a course and is clearly present more than 50% of the time/effort in all sections of the course.
MODERATE This is an outcome that occurs one or more times in a course, but definitely less than 50% of the time. Still, the emphasis is such that it would be reasonable to assess at least one dimension of this outcome in this course if necessary.
LITTLE This is an outcome that should occur at least once in a class, irrespective of who teaches it, but it would not be reasonable to assess the outcome due to a lack of required depth of coverage across all sections of the course.
NONE Absolutely, positively not required to be covered in a class.
  1. Ability to apply knowledge of mathematics, science, and engineering
    • Relevant Content: Development of Applications to test and understand the course concepts
      Method of Evaluation: Projects and Exams
      Level of Coverage: SIGNIFICANT
  2. Ability to design and conduct experiments, as well as analyze and interpret data
    • Relevant Content: see (a)
      Method of Evaluation: Projects and Exams
      Level of Coverage: SIGNIFICANT
  3. Ability to design a system, component, or process to meet desired needs
    • Relevant Content: Writing programs to meet the specified requirements
      Method of Evaluation: Projects
      Emphasis: SIGNIFICANT
  4. Ability to identify, formulate, and solve engineering problems
      Relevant Content: see (a)
      Method of Evaluation: Projects and Exams
      Level of Coverage: LITTLE
  5. Recognition of the need for, and an ability to engage in life-long learning
      Relevant Content: Recent changes in paradigms and development methods
      Method of Evaluation: Class Discussion
      Emphasis: MODERATE
  6. Knowledge of contemporary issues
      Relevant Content: see (i)
      Method of Evaluation: Class Discussion
      Emphasis: MODERATE
  7. Ability to use the techniques, skills, and modern engineering tools necessary for engineering practice
      Relevant Content: Application development
      Method of Evaluation: Projects and Exams
      Emphasis: SIGNIFICANT

↑ Back to Top

CMSC434 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.

Pre-Requisite
A grade of C or better in CMSC330; and PSYC100

Co-Requisite
None

Textbook(s)

  • Shneiderman & Plaisant, Designing the User Interface, 5th Ed., Addison-Wesley, (2009) (recommended)

Other Required Material(s)

  • Class materials provided

Syllabus Prepared By and Date
Drs. Bederson and Plane, Spring 2011.

Course Objectives

  1. Understand science base (theories, models, and studies) and user interface design and development.
  2. Understand graphical user interfaces for desktop, web, and mobile devices.
  3. Learn to assess usability by quantitative methods. Conduct task analyses, usability tests, expert reviews, and continuing assessments of working products by interviews, surveys, and logging.
  4. Apply design processes and guidelines to develop professional quality user interfaces. Build low-fidelity paper mockups, and a high-fidelity prototype using contemporary tools
Topics Covered
  1. Overview
  2. The Past and the Future
  3. Principles for Design
  4. Understanding users and their tasks
  5. Designing with the user
  6. Basic human factors
  7. Designing visual interfaces
  8. Interface technology
  9. Implementing GUIs
  10. Evaluation and experimental design

Class/Lab Schedule
3 hours lecture

Relationship of Course Objects to Program Outcomes

SIGNIFICANT This is an outcome/theme that frequently reoccurs in a course and is clearly present more than 50% of the time/effort in all sections of the course.
MODERATE This is an outcome that occurs one or more times in a course, but definitely less than 50% of the time. Still, the emphasis is such that it would be reasonable to assess at least one dimension of this outcome in this course if necessary.
LITTLE This is an outcome that should occur at least once in a class, irrespective of who teaches it, but it would not be reasonable to assess the outcome due to a lack of required depth of coverage across all sections of the course.
NONE Absolutely, positively not required to be covered in a class.
  1. Ability to apply knowledge of mathematics, science, and engineering
    • Relevant Content: Analysis and statistics of user studies
      Method of Evaluation: Homework assignments and exams
      Level of Coverage: SIGNIFICANT
  2. Ability to identify, formulate, and solve engineering problems
      Relevant Content: Design of prototypes and software
      Method of Evaluation: Homework assignments and projects
      Level of Coverage: MODERATE
  3. Understanding of professional and ethical responsibility
      Relevant Content: Inclusiveness and development
      Method of Evaluation: Homework assignments and Class discussions
      Level of Coverage: SIGNIFICANT
  4. Ability to communicate effectively
      Relevant Content: Presentations and documentation
      Method of Evaluation: Projects
      Level of Coverage: SIGNIFICANT
  5. Broad education necessary to understand the impact of engineering solutions in a global and societal context
      Relevant Content: User interface development and analysis
      Method of Evaluation: Class discussions
      Level of Coverage: MODERATE
  6. Recognition of the need for, and an ability to engage in life-long learning
      Relevant Content: Fast paced change of the field
      Method of Evaluation: Projects and Class discussions
      Emphasis: MODERATE
  7. Knowledge of contemporary issues
      Relevant Content: see (i)
      Method of Evaluation: Projects and Class discussions
      Emphasis: MODERATE
  8. Ability to use the techniques, skills, and modern engineering tools necessary for engineering practice
      Relevant Content: Prototype and Project Development
      Method of Evaluation: Projects and Exams
      Emphasis: SIGNIFICANT

↑ Back to Top

CMSC435 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.

Pre-Requisite
A grade of C or better in CMSC412 or 417 or 420 or 430 or 433

Co-Requisite
None

Textbook(s)

  • None

Other Required Material(s)

  • References provided or suggested during the semester

Syllabus Prepared By and Date
Drs. Purtilo and Plane, May 2011.

Course Objectives

  1. Develop large software through detailed design, testing/debugging the design for correctness, writing the code, and testing the software quality.
  2. Understand techniques for planning, capturing requirements, designing the system, writing the code, unit and system testing, delivering and maintaining the software.
  3. Have experience in contributing as a team member to a large project
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 lecture

Relationship of Course Objects to Program Outcomes

SIGNIFICANT This is an outcome/theme that frequently reoccurs in a course and is clearly present more than 50% of the time/effort in all sections of the course.
MODERATE This is an outcome that occurs one or more times in a course, but definitely less than 50% of the time. Still, the emphasis is such that it would be reasonable to assess at least one dimension of this outcome in this course if necessary.
LITTLE This is an outcome that should occur at least once in a class, irrespective of who teaches it, but it would not be reasonable to assess the outcome due to a lack of required depth of coverage across all sections of the course.
NONE Absolutely, positively not required to be covered in a class.
  1. Ability to apply knowledge of mathematics, science, and engineering
    • Relevant Content: Students study and employ software engineering processes to develop a class project in team-based activities
      Method of Evaluation: Projects
      Level of Coverage: SIGNIFICANT
  2. Ability to design and conduct experiments, as well as analyze and interpret data
    • Relevant Content: Students create risk reduction assessments on class projects then perform tailored prototyping experiments to determine key design issues in the class project
      Method of Evaluation: Projects and Class homework
      Level of Coverage: SIGNIFICANT
  3. Ability to design a system, component, or process to meet desired needs
    • Relevant Content: This is the essence of the class project for the semester
      Method of Evaluation: Projects and Class homework
      Emphasis: SIGNIFICANT
  4. Ability to function on a multi-disciplinary team
      Relevant Content: Class projects are team-based, which draw on a variety of skills by virtue of serving as a capstone course
      Method of Evaluation: Projects
      Level of Coverage: SIGNIFICANT
  5. Ability to identify, formulate, and solve engineering problems
      Relevant Content: See (c) above
      Method of Evaluation: Projects and Class homework
      Level of Coverage: SIGNIFICANT
  6. Understanding of professional and ethical responsibility
      Relevant Content: 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
      Method of Evaluation: Class discussions
      Level of Coverage: LITTLE
  7. Ability to communicate effectively
      Relevant Content: 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
      Method of Evaluation: Projects, Class Presentations and Class homework
      Level of Coverage: SIGNIFICANT
  8. Broad education necessary to understand the impact of engineering solutions in a global and societal context
      Relevant Content: See (f) above
      Method of Evaluation: Class discussion and Projects
      Level of Coverage: MODERATE
  9. Recognition of the need for, and an ability to engage in life-long learning
      Relevant Content: Lectures cover specific techniques that computing professionals need to know in order to stay current and also refine their skills
      Method of Evaluation: Projects and Class homework
      Emphasis: MODERATE
  10. Knowledge of contemporary issues
      Relevant Content: Students prepare a weekly "in-the-news" report of technology developments and see (i) above
      Method of Evaluation: Class discussion
      Emphasis: SIGNIFICANT
  11. Ability to use the techniques, skills, and modern engineering tools necessary for engineering practice
      Relevant Content: Various modern support tools are used; the software engineering paradigm is an integral component of modern computer engineering practice
      Method of Evaluation: Projects
      Emphasis: SIGNIFICANT

↑ Back to Top

CMSC451 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

Pre-Requisite
Grades of C or better in CMSC351

Co-Requisite
None

Textbook(s)

  • Jon Kleinberg and Eva Tardos, Algorithm Design, Addison-Wesley, 2005.
  • Thomas Cormen, Charles Leiserson, Ron Rivest, and Clifford Stein, Introduction to Algorithms, McGraw Hill and MIT Press, Second Edition, 2001.

Other Required Material(s)

  • None

Syllabus Prepared By and Date
Drs. Kruskal and Plane, Spring 2011.

Course Objectives

  1. This course presents the fundamental techniques for designing efficient computer algorithms, proving their correctness, and analyzing their complexity.
  2. 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
  1. Graph exploration
  2. Greedy algorithms
  3. Divide and Conquer algorithms:
  4. Dynamic programming
  5. String-type algorithms
  6. Lower Bounds:
  7. NP-completeness and Intractability
  8. Approximation Algorithms
  9. Randomized Algorithms

Class/Lab Schedule
3 hours lecture

Relationship of Course Objects to Program Outcomes

SIGNIFICANT This is an outcome/theme that frequently reoccurs in a course and is clearly present more than 50% of the time/effort in all sections of the course.
MODERATE This is an outcome that occurs one or more times in a course, but definitely less than 50% of the time. Still, the emphasis is such that it would be reasonable to assess at least one dimension of this outcome in this course if necessary.
LITTLE This is an outcome that should occur at least once in a class, irrespective of who teaches it, but it would not be reasonable to assess the outcome due to a lack of required depth of coverage across all sections of the course.
NONE Absolutely, positively not required to be covered in a class.
  1. Ability to apply knowledge of mathematics, science, and engineering
    • Relevant Content: Mathematics used in analyzing running times of algorithms; discrete mathematics and combinatorics are applied in proving the correctness of algorithms
      Method of Evaluation: Homework, Quizzes and Exams
      Level of Coverage: SIGNIFICANT
  2. Ability to design and conduct experiments, as well as analyze and interpret data
    • Relevant Content: Programming project is assigned which requires students to implement various algorithms and analyze their execution times empirically
      Method of Evaluation: Projects
      Level of Coverage: MODERATE
  3. Ability to identify, formulate, and solve engineering problems
      Relevant Content: See (b) above
      Method of Evaluation: Projects
      Level of Coverage: MODERATE
  4. Ability to communicate effectively
      Relevant Content: Students must be able to communicate their algorithm designs in a clear manner
      Method of Evaluation: Homework assignments
      Level of Coverage: MODERATE
  5. Recognition of the need for, and an ability to engage in life-long learning
      Relevant Content: Students learn methods by which algorithms are designed and how to approach the design process to solve the next generation of algorithms
      Method of Evaluation: Homework assignments and Class discussion
      Emphasis: LITTLE
  6. Ability to use the techniques, skills, and modern engineering tools necessary for engineering practice
      Relevant Content: Students learn the most common algorithm design techniques, including dynamic programming, depth-first search, and greedy methods
      Method of Evaluation: Homework assignments, Quizzes and Exams
      Emphasis: SIGNIFICANT

↑ Back to Top

CMSC452 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

Pre-Requisite
Grades of C or better in CMSC351

Co-Requisite
None

Textbook(s)

  • None

Other Required Material(s)

  • None

Syllabus Prepared By and Date
Drs. Gasarch and Plane, Spring 2011.

Course Objectives

  1. Introduction of formal models of computing, types of automata.
  2. Their relations to formal grammars and languages
Topics Covered
  1. Mathematical Preliminaries
  2. Regular languages and Finite Automata
  3. Context free grammars and context free languages (CFL)
  4. Primitive recursive functions, Turing Machines, other models of computation

Class/Lab Schedule
3 hours lecture

Relationship of Course Objects to Program Outcomes

SIGNIFICANT This is an outcome/theme that frequently reoccurs in a course and is clearly present more than 50% of the time/effort in all sections of the course.
MODERATE This is an outcome that occurs one or more times in a course, but definitely less than 50% of the time. Still, the emphasis is such that it would be reasonable to assess at least one dimension of this outcome in this course if necessary.
LITTLE This is an outcome that should occur at least once in a class, irrespective of who teaches it, but it would not be reasonable to assess the outcome due to a lack of required depth of coverage across all sections of the course.
NONE Absolutely, positively not required to be covered in a class.
  1. Ability to apply knowledge of mathematics, science, and engineering
    • Relevant Content: Proofs and demonstration of course topics
      Method of Evaluation: Homework assignments and Exams
      Level of Coverage: SIGNIFICANT
  2. Ability to identify, formulate, and solve engineering problems
      Relevant Content: Grammars and Languages
      Method of Evaluation: Homework assignments and Exams
      Level of Coverage: LITTLE
  3. Ability to communicate effectively
      Relevant Content: Written assignments must be clear and concise
      Method of Evaluation: Homework assignments
      Level of Coverage: LITTLE
  4. Recognition of the need for, and an ability to engage in life-long learning
      Relevant Content: Open Questions
      Method of Evaluation: Class Discussion
      Emphasis: LITTLE
  5. Knowledge of contemporary issues
      Relevant Content: Applied Concepts
      Method of Evaluation: Class Discussion
      Emphasis: LITTLE
  6. Ability to use the techniques, skills, and modern engineering tools necessary for engineering practice
      Relevant Content: Proof and Analysis Methods
      Method of Evaluation: Homework assignments and Exams
      Emphasis: SIGNIFICANT

↑ Back to Top

CMSC456 Introduction to Cryptography, 3 credits

Course Description
This course serves as an introduction to cryptography suitable for undergraduate or graduate students. The focus is on definitions, theoretical foundations, and rigorous proofs of security. This course is cross-listed with the mathematics department, so it will have a significant mathematical component. This course complements Computer and Network Security (CMSC 414) which focuses more on "high-level" issues and actual systems; in this class, we will look "under the hood" and attempt to understand various cryptographic protocols and algorithms.

No advanced mathematics background is assumed, but students are expected to possess "mathematical maturity" since many of the concepts will be abstract, rigorous proofs will be given, and we will cover some advanced mathematics in class. Discrete mathematics (probability theory, modular arithmetic) and complexity theory will be helpful, but all necessary prerequisites will be reviewed in class.

Pre-Requisite
Two 400-level MATH courses OR (CMSC330 AND CMSC351)

Co-Requisite
None

Textbook(s)

  • Katz, Jonathan and Yehuda Lindell, Introduction to Modern Cryptography, Chapman & Hall/CRC Press, 2007

Other Required Material(s)

  • None

Syllabus Prepared By and Date
Drs. Katz and Plane, June 2011.

Course Objectives

  1. Students should understand the principles of modern cryptography, e.g., the importance of definitions, the necessity of being precise about assumptions, and the need for rigorous security proofs for schemes used in practice
  2. Students should learn how to use basic cryptographic tools including symmetric-key encryption, message authentication codes, public-key encryption, and digital signatures.
  3. Students should learn the basic primitives that are used in the real world to construct the above tools, e.g., hash functions, block ciphers, and number-theoretic assumptions underlying current cryptographic constructions
Topics Covered
  1. Classical vs. modern cryptography; some historical ciphers; principles of modern cryptography; perfectly secret encryption. (Chapters 1 and 2: 3 lectures)
  2. Computational security. Symmetric-key encryption. (Chapter 3: 4 lectures)
  3. Message authentication and hash functions. (Chapter 4: 4 lectures)
  4. Block cipher design. (Chapter 5: 2 lectures)
  5. Theoretical constructions of pseudorandom generators/functions. (Sections 6.1, 6.2: 1 lecture)
  6. Number theory; cryptographic hardness assumptions and their applications. (Chapter 7: 4 lectures)
  7. The public-key revolution; Diffie-Hellman key exchange. (Chapter 9: 1 lecture)
  8. Public-key encryption. (Chapter 10: 3 lectures)
  9. Digital signatures. (Chapter 12: 3 lectures)
  10. The random oracle model and efficient cryptographic schemes. (Chapter 13: 2 lectures)
  11. Other advanced topics determined by current trends and time

Class/Lab Schedule
3 hours lecture

Relationship of Course Objects to Program Outcomes

SIGNIFICANT This is an outcome/theme that frequently reoccurs in a course and is clearly present more than 50% of the time/effort in all sections of the course.
MODERATE This is an outcome that occurs one or more times in a course, but definitely less than 50% of the time. Still, the emphasis is such that it would be reasonable to assess at least one dimension of this outcome in this course if necessary.
LITTLE This is an outcome that should occur at least once in a class, irrespective of who teaches it, but it would not be reasonable to assess the outcome due to a lack of required depth of coverage across all sections of the course.
NONE Absolutely, positively not required to be covered in a class.
  1. Ability to apply knowledge of mathematics, science, and engineering
    • Relevant Content: Number theory, group theory, ability to understand mathematical definitions and proofs
      Method of Evaluation: Homework and exams
      Level of Coverage: SIGNIFICANT
  2. Ability to design a system, component, or process to meet desired needs
    • Relevant Content: Construct cryptographic schemes meeting desired functionality
      Method of Evaluation: Homework and exams
      Emphasis: SIGNIFICANT
  3. Ability to identify, formulate, and solve engineering problems
      Relevant Content: Construct cryptographic schemes meeting desired functionality, while aiming for the best possible efficiency
      Method of Evaluation: Homework and exams
      Level of Coverage: MODERATE
  4. Ability to communicate effectively
      Relevant Content: Students are expected to be able to present their ideas clearly, and to be able to write correct mathematical proofs
      Method of Evaluation: Homeworks and exams
      Level of Coverage: LITTLE
  5. Knowledge of contemporary issues
      Relevant Content: Discussion of cryptographic primitives and protocols that are being used in practice. Discussion of current events (new standards, new attacks) as they develop.
      Method of Evaluation: None
      Emphasis: SIGNIFICANT
  6. Ability to use the techniques, skills, and modern engineering tools necessary for engineering practice
      Relevant Content: Construct cryptographic schemes meeting desired functionality, while aiming for the best possible efficiency
      Method of Evaluation: None
      Emphasis: LITTLE

↑ Back to Top




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