|
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)
Syllabus Prepared By and Date
Dr. Plane, Spring 2011.
Course Objectives
- Students become comfortable with the object oriented paradigm.
- Students become more proficient in the Java Language.
- 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. |
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
↑ 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)
Syllabus Prepared By and Date
Mr. Herman and Dr. Plane, Spring 2011.
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
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. |
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
↑ 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
- A good working knowledge of how to program in both C and Assembly languages.
- An introduction of how to write systems programs including command-line arguments, redirecting of I/O and data bit manipulations.
- Understanding process management (forking processes and managing threads) and memory management (dynamic allocation and deallocation).
- Introduction to tools used on the UNIX system for editing, debugging, linking, testing and tracking programs and processes.
- Understand how different types of data are stored and how the stack is used to manage processes
Topics Covered
- Introduction: Moving from Java to C
- Pointers and memory management
- I/O
- The preprocessor and makefiles
- Assembly language
- Process control: fork, dup2, etc.
- Function pointers
- Threads
- Libraries and linking
- Program measurement and optimization
- 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. |
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
↑ 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)
Syllabus Prepared By and Date
Drs. Plane and Golub, Spring 2011.
Course Objectives
See topics covered.
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 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. |
- 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
- 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
- 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
- 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
- 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)
Syllabus Prepared By and Date
Drs. Foster and Plane, Spring 2011.
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.
- Languages:
Ruby
OCaml
Concurrency in Java
Topics Covered
- Administrative and course introduction (1 lecture)
- Scripting Languages (Ruby, 2 lectures)
- Implicit vs. explicit declarations
- Dynamic vs. static typing
- Text processing and string manipulation
- Regular expressions and finite automata (3 lectures)
- Context-free grammars (3 lectures)
- Functional programming (OCaml, 5 lectures)
- Lists and recursion
- Higher-order programming and closures
- Types and polymorphism
- Data types and pattern matching
- Modularity and abstraction
- Concurrency (5 lectures)
- Basics of multi-threaded programming
- Shared memory concurrency
- Message passing concurrency
- Design idioms and comparisons
- Environments, scoping, and binding (2 lectures)
- Functions and procedures
- Parameter passing mechanisms
- Dynamic vs. static scoping
- Run-time implementations
- Advanced Topics (2 lectures)
- Lambda Calculus
- Garbage collection and memory management
- 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. |
- 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
- 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
- Ability to identify, formulate, and solve engineering problems
Relevant Content:
See (c) above.
Method of Evaluation:
Projects and Exams
Level of Coverage:
SIGNIFICANT
- 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
- 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
- Knowledge of contemporary issues
Relevant Content:
Impact of languages on the web, e-commerce and communication
Method of Evaluation:
Projects and Class discussions
↑ 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
- Understand the complexity of some elementary algorithms related to sorting, graphs and trees, and combinatorics.
- Be able to analyze algorithms using mathematical techniques to solve recurrences and summations.
- Be able to construct proofs about these analysis techniques
Topics Covered
- Introduction and review of proofs
- Review and Expansion of Induction Methods
- 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
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. |
- 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
- 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
- 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
- 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
- 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
↑ 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
- 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
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. |
- 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
- 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
- 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
- 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
↑ 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)
Syllabus Prepared By and Date
Drs. Shankar and Plane, May 2011.
Course Objectives
- Acquire broad knowledge of security techniques.
- Learn to apply security techniques to a real distributed application
Topics Covered
- Number theory
- Public and secret key cryptography (including RSA and Diffie-Helman)
- Authentication protocols (including strong-password protocols, PFS, identity hiding)
- 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. |
- 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
- 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
- Ability to identify, formulate, and solve engineering problems
Relevant Content:
See (c) above
Method of Evaluation:
Homework exercises and Exams
Level of Coverage:
MODERATE
- 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
- 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
- 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
- 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
- Knowledge of contemporary issues
Relevant Content:
See (h) above
Method of Evaluation:
Class discussions
- Ability to use the techniques, skills, and modern engineering tools necessary for engineering practice
Relevant Content:
Proficiency in Java
Method of Evaluation:
Projects
↑ 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)
Syllabus Prepared By and Date
Drs. Agrawala and Plane, Spring 2011.
Course Objectives
- An introduction to computer networking
- Basic networking concepts and algorithms, focusing on the Internet
- In-depth understanding of the TCP/IP protocol suite, datagram routing, congestion control, intra- and inter-domain routing, quality of service
Topics Covered
- Introduction to data communications
- The physical layer
- Framing, error detection and correction
- Channel allocation
- Routing and congestion control algorithms
- Internetworking
- Transport protocols
- Network security and administration
- 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. |
- 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
- 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
- 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
- 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
↑ 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)
Syllabus Prepared By and Date
Drs. Hugue and Plane, May 2011.
Course Objectives
- 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-tree Family (2 lectures)
- Hashing (3 lectures)
- Huffman Coding (1 lecture)
- Winged edge data Structures (1 lecture)
- Spacial Structures (3-4 lectures)
- Amortized Analysis and Splay Trees (2-3 lectures)
- Binomial and Fibonacci Heaps (2 lectures)
- 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. |
- 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
- 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
- Ability to identify, formulate, and solve engineering problems
Relevant Content:
Solve complex programming projects
Method of Evaluation:
Projects and Exams
Level of Coverage:
SIGNIFICANT
- 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
- 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
- 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
- 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
- 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
↑ 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)
Syllabus Prepared By and Date
Drs. Perlis and Plane, Spring 2011.
Course Objectives
- To give an overview of the discipline of AI as a whole.
- 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
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. |
- 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
- 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
- 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
- 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
- Knowledge of contemporary issues
Relevant Content:
Applications of Artificial Intelligence are discussed
Method of Evaluation:
Class discussions
- 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
↑ 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)
Syllabus Prepared By and Date
Drs. Pop and Plane, Spring 2011.
Course Objectives
- Introduce students to database systems and motivate the database approach as a mechanism for modeling the real world.
- 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.
- Allow the students to complete a class project that requires the design, and implementation of a database application
Topics Covered
- Models for data representation
- SQL language
- Schema normalization
- Data storage
- Query processing and optimization
- Transactions, concurrency, and recovery
- Parallel/distributed databases
- 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. |
- 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
- 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
- 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
- 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
- Ability to communicate effectively
Relevant Content:
Group projects and presentation of those projects
Method of Evaluation:
Projects and related presentations
Level of Coverage:
SIGNIFICANT
- 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
- Knowledge of contemporary issues
Relevant Content:
Databases in modern web based applications
Method of Evaluation:
Class discussion, Exams, and Project
- 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
↑ 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)
Syllabus Prepared By and Date
Drs. Aloimonos and Plane, Spring 2011.
Course Objectives
- Understand the mathematical foundations of image processing and computer vision;
- Develop programming skills to implement complete computer vision systems
Topics Covered
- Introduction to image processing
- Image Formation
- Linear Algebra review
- Filtering
- Edge detection and Canny Edge detection
- Resampling
- Image Motion
- Statistics on Image Features
- Stereopsis
- Projective Geometry
- Epipolar Geometry
- Interpretation of Motion and 3D motion
- Shading and Texture
- 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. |
- 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
- 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
- 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
- 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
- Ability to communicate effectively
Relevant Content:
Detailed reports are required for every project
Method of Evaluation:
Projects
Level of Coverage:
SIGNIFICANT
- 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
- 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
↑ 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)
Syllabus Prepared By and Date
Drs. Mount and Plane, Spring 2011.
Course Objectives
- Understand the principles of computer graphics.
- Consider methods for modeling 3-dimensional objects and efficiently generating photorealistic renderings on color raster graphics devices.
- 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. |
- 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
- 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
- Ability to communicate effectively
Relevant Content:
Presentations of projects developed
Method of Evaluation:
Projects
Level of Coverage:
MODERATE
- 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
↑ 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)
Syllabus Prepared By and Date
Drs. Tseng and Plane, Spring 2011.
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
Topics Covered
- Understand lexical analysis and parsing, intermediate representations
- Be able to perform program analysis and optimization.
- 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. |
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
↑ 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)
Syllabus Prepared By and Date
Drs. Hicks and Plane, Spring 2011.
Course Objectives
- Understand concurrent and distributed programming.
- Be able to identify pitfalls and difficulties in writing such programs and explore design patterns and best practices for avoiding them.
- 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
- Java Review
- Programming Abstractions, Techniques and Tools
- Object-Oriented Design Patterns
- Refactoring
- Concurrency
- Threads
- Distributed Programming with Java RMI
- 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. |
- 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
- 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
- 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
- Ability to identify, formulate, and solve engineering problems
Relevant Content:
see (a)
Method of Evaluation:
Projects and Exams
Level of Coverage:
LITTLE
- 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
- Knowledge of contemporary issues
Relevant Content:
see (i)
Method of Evaluation:
Class Discussion
- Ability to use the techniques, skills, and modern engineering tools necessary for engineering practice
Relevant Content: Application development
Method of Evaluation:
Projects and Exams
↑ 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)
Syllabus Prepared By and Date
Drs. Bederson and Plane, Spring 2011.
Course Objectives
- Understand science base (theories, models, and studies) and user interface design and development.
- Understand graphical user interfaces for desktop, web, and mobile devices.
- 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.
- 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
- 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
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. |
- 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
- 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
- Understanding of professional and ethical responsibility
Relevant Content:
Inclusiveness and development
Method of Evaluation:
Homework assignments and Class discussions
Level of Coverage:
SIGNIFICANT
- Ability to communicate effectively
Relevant Content:
Presentations and documentation
Method of Evaluation:
Projects
Level of Coverage:
SIGNIFICANT
- 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
- 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
- Knowledge of contemporary issues
Relevant Content:
see (i)
Method of Evaluation:
Projects and Class discussions
- 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
↑ 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)
Other Required Material(s)
- References provided or suggested during the semester
Syllabus Prepared By and Date
Drs. Purtilo and Plane, May 2011.
Course Objectives
- Develop large software through detailed design, testing/debugging the design for correctness, writing the code, and testing the software quality.
- Understand techniques for planning, capturing requirements, designing the system, writing the code, unit and system testing, delivering and maintaining the software.
- Have experience in contributing as a team member to a large project
Topics Covered
- Motivation --- why SE instead of ad hoc techniques?
- Terminology; introduction to process models and configuration management
- Basic principles of quality assurance and risk reduction
- Requirements capture and analysis
- Specification and design techniques
- Implementation issues
- Unit test techniques
- System integration and testing techniques
- Correctness; verification
- Support tools and automated systems; CASE tools
- Measurement and costing issues; Planning and scheduling
- Standards
- Human factors
- 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. |
- 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
- 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
- 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
- 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
- Ability to identify, formulate, and solve engineering problems
Relevant Content:
See (c) above
Method of Evaluation:
Projects and Class homework
Level of Coverage:
SIGNIFICANT
- 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
- 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
- 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
- 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
- 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
- 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
↑ 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)
Syllabus Prepared By and Date
Drs. Kruskal and Plane, Spring 2011.
Course Objectives
- This course presents the fundamental techniques for designing efficient 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
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. |
- 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
- 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
- Ability to identify, formulate, and solve engineering problems
Relevant Content:
See (b) above
Method of Evaluation:
Projects
Level of Coverage:
MODERATE
- 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
- 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
- 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
↑ 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)
Other Required Material(s)
Syllabus Prepared By and Date
Drs. Gasarch and Plane, Spring 2011.
Course Objectives
- Introduction of formal models of computing, types of automata.
- Their relations to formal grammars and languages
Topics Covered
- Mathematical Preliminaries
- Regular languages and Finite Automata
- Context free grammars and context free languages (CFL)
- 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. |
- 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
- Ability to identify, formulate, and solve engineering problems
Relevant Content:
Grammars and Languages
Method of Evaluation:
Homework assignments and Exams
Level of Coverage:
LITTLE
- Ability to communicate effectively
Relevant Content:
Written assignments must be clear and concise
Method of Evaluation:
Homework assignments
Level of Coverage:
LITTLE
- Recognition of the need for, and an ability to engage in life-long learning
Relevant Content:
Open Questions
Method of Evaluation:
Class Discussion
- Knowledge of contemporary issues
Relevant Content:
Applied Concepts
Method of Evaluation:
Class Discussion
- 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
↑ 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)
Syllabus Prepared By and Date
Drs. Katz and Plane, June 2011.
Course Objectives
- 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
- Students should learn how to use basic cryptographic tools including symmetric-key encryption, message authentication codes, public-key encryption, and digital signatures.
- 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
- Classical vs. modern cryptography; some historical ciphers; principles of modern cryptography; perfectly secret encryption. (Chapters 1 and 2: 3 lectures)
- Computational security. Symmetric-key encryption. (Chapter 3: 4 lectures)
- Message authentication and hash functions. (Chapter 4: 4 lectures)
- Block cipher design. (Chapter 5: 2 lectures)
- Theoretical constructions of pseudorandom generators/functions. (Sections 6.1, 6.2: 1 lecture)
- Number theory; cryptographic hardness assumptions and their applications. (Chapter 7: 4 lectures)
- The public-key revolution; Diffie-Hellman key exchange. (Chapter 9: 1 lecture)
- Public-key encryption. (Chapter 10: 3 lectures)
- Digital signatures. (Chapter 12: 3 lectures)
- The random oracle model and efficient cryptographic schemes. (Chapter 13: 2 lectures)
- 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. |
- 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
- 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
- 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
- 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
- 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
- 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
↑ Back to Top
|