Course no. | Title | Credit
Hours |
Reqd(R)/ Elective (E) |
---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CSE 723 | Introduction to Cryptography | 3 | E |
|
|
|
|
|
|
|
|
Summary:
The courses in this group, while related to each other, also differ in important respects from each other. CSE 541 provides basic coverage of essential numerical techniques. Math 366 and Math 566 acquaint students with fundamental skills related to discrete mathematics, skills that are necessary to explore essential topics in theoretical computer science. All undergraduates are required to take all three of these courses.
CSE 625 and CSE 725 offer a two course sequence in automata theory and computational complexity. In CSE 625 students encounter finite state machines, pushdown automata and formal languages. These topics are continued in CSE 725 where students gain an appreciation for the theoretical genesis of computer science. Topics include Turing machines and an introduction to complexity theory including the classes P, NP and NP-comple CSE 625 is a required course for undergraduate majors; 725 is a required course for CSE graduate students, and an elective for undergraduates.
CSE 680, CSE 723 and CSE 780 comprise the algorithms subgroup. In CSE 680 students are introduced to formal algorithmic analysis and asymptotic notation. Algorithmic design is also covered. CSE 780 further examines algorithmic topics with emphasis on advanced design methods such as dynamic programming. CSE 723 is a new course on cryptographic algorithms and protocols. CSE 680 is a required course for undergraduate majors; 780 a required course for CSE graduate students, and an elective for undergraduates; CSE 723 is an elective for both undergraduates and graduate students.
Taken together, the courses above provide our students with a broad and detailed overview of the foundations of computer science. Students who master this material are well prepared for further study and are also likely to gain a deeper understanding of the content of other, less theoretical, courses.
Two courses CSE 642, Numerical Linear Algebra, and CSE 727, Computational Complexity, were included in the previous Foundations Course Group Report. Since they have not been offered in over five years and there is no plan to offer them in the near future, we eliminated them from this report.Math 566: Discrete Mathematical Structures II is a continuation of topics from Math 366. These include counting and combinatorics, recurrence relations, an introduction to algorithmic efficiency and graphs. Math 566 is now required of all undergraduate majors in the CSE Department. Current textbook: Discrete Mathematics with Applications, 3rd Edition, Susanna S. Epp.
CSE 541: Elementary Numerical Methods is a survey of basic numerical methods. CSE 541 is required of all undergraduate majors in computer science. The course covers number systems and errors of finite representation, solution of a single non-linear equation, interpolation, numerical integration, and solutions of linear systems. In the final weeks, either interval arithmetic or least squares curve fitting are covered. Some sections of the course use MatLab. Typical textbook: Numerical Mathematics and Computing, Cheney and Kincaid.
CSE 625: Introduction to Automata and Formal Languages is a standard undergraduate course in automata theory and formal languages and is required of all undergraduate majors in the CSE Department. The course covers regular expressions, regular languages, regular and context-free grammars, finite and pushdown automata and the pumping lemma. Turing machines are sometimes introduced in the final weeks of the course. Typical textbook: Introduction to Languages and the Theory of Computation, John Martin.
CSE 680: Introduction to Analysis of Algorithms & Data Structures is required of all undergraduate computer science majors. It is a standard undergraduate algorithms course with emphasis on run-time analysis, asymptotic notation, recursive algorithms, sorting algorithms and graph algorithms. There is also some coverage of algorithmic design techniques including divide-and-conquer and greedy. Typical textbook: Introduction to Algorithms, Cormen, Leiserson, Rivest & Stein.
CSE 723: Introduction to Cryptography is a new course in cryptography, primarily for graduate students but also open to undergraduates. The course covers fundamental concepts in modern cryptography, including symmetric-key encryption, cryptographic hash functions, message authentication, public-key cryptography, discrete logarithm-based cryptography, elliptic curve cryptography, digital signatures, and elementary cryptographic protocols. Typical textbook: Introduction to Modern Cryptography, Katz & Lindell, 2008.CSE 725: Computability and Unsolvability is a graduate course in decidability and NP-completeness. It is required of all CSE graduate students but some CSE and CIS undergraduate students also take the class. The course covers Turing machines, Church's thesis, recursive and recursively enumerable languages, self replicating programs, polynomial time and NP-completeness. Typical textbook: Introduction to the Theory of Computation, Michael Sipser.
CSE 780: Analysis of Algorithms is a graduate course in algorithms. It is required of all CSE graduate students and is open to undergraduates. The course covers divide and conquer algorithms, greedy algorithms, dynamic programming, and advanced graph algorithms. Typical textbook: Introduction to Algorithms, Cormen, Leiserson, Rivest & Stein.
Advanced Algorithms is a new course in algorithms, primarily for graduate students, but also open to undergraduates. It has been piloted but not yet approved as a permanent CSE course. It has not yet been assigned a course number. The course covers advanced graph algorithms, string algorithms, linear programming, matrix operations, Fourier transforms, randomized algorithms, approximation algorithms and geometric algorithms. Typical textbook: Introduction to Algorithms, Cormen, Leiserson, Rivest & Stein.CSE 321 includes formal program specification which requires that students be able to understand, write and reason with formal logic and notation. Students in CSE 625 must be familiar with proofs and proof techniques, including proof by induction. Students in CSE 630 must be familiar with logic and proofs for knowledge representation. In CSE 670, students use logic to form database queries. Boolean logic is essential to the circuit design covered in CSE 675. To understand algorithm design and analysis, students in CSE 680 need to be familiar with proofs and proof techniques and with basic counting arguments. In CSE 755 students learn formal specification methods requiring familiarity with formal logic.
Math 566: Discrete Mathematical Structures II:
Prerequisites: Math 366
Prerequisite for: CSE 680.
In CSE 680 students are asked to analyze and write recursive
algorithms and to understand a variety of graph algorithms.
Both topics are covered in Math 566.
CSE 541: Elementary Numerical Methods:
Prerequisites: CSE 221 (majors) or CSE 230 (non-majors) or CSE 502 (non-majors),
Math 153 (third quarter calculus).
Prerequisite for: CSE 621, 640, 642 and 682.
CSE 621, Introduction to High Performance Computing, makes direct
use of many topics from CSE 541. CSE 640 and CSE 642 (though neither
has been offered recently) are continuations of CSE 541. CSE 682 is
a course in computer animation. Numerical methods are crucial in
graphics.
CSE 625: Introduction to Automata and Formal Languages:
Prerequisites: CSE 321 and Math 366.
Prerequisite for: CSE 655, 725 and 756.
In CSE 655 (Programming Languages) and CSE 756 (Compiler Design)
students must have familiarity with grammars and finite state
machines. As a continuation of 625, CSE 725 relies heavily
on much of the material in that course.
CSE 680: Introduction to Algorithms and Data Structures:
Prerequisites: CSE 560 or CSE 668 or ECE 668, Stat 427 and Math 566.
Prerequisite for: CSE 756 and 780.
In CSE 756
students study parsing, an understanding of which will benefit
from an understanding of efficiency. CSE 780 is a continuation
of topics studied in CSE 680.
CSE 725: Computability and Unsolvability:
Prerequisites: CSE 625.
CSE 725 is a continuation of the material covered in 625.
CSE 780: Analysis of Algorithms:
Prerequisites: CSE 680.
Prerequisite for: CSE 725.
Students in CSE 725 benefit from an understanding of algorithmic
efficiency and the simple complexity classes (for example, P)
covered in 780.
Root finding methods (outcome 2) are discussed at length. Students typically applying the methods to specific functions and are exposed to theoretical analysis of these methods. Numerical integration and differentiation methods (outcomes 3, 4, 10) are discussed at some length although the depth of discussion varies. Most students should be able to apply these methods and to understand some theory underlying the error analysis.
Gaussian elimination (outcome 5) is usually discussed in considerable detail. Most students are able to apply Gaussian elimination with pivoting and solve problems using Gaussian elimination.
Most 541 offerings include a significant programming/implementation component.
Toward the end of the quarter Turing machines, Church’s thesis is discussed (outcome 5). The students learn to construct simple Turing machines and are exposed to the concept of a universal Turing machine.
The previous report contained "Be exposed to decision problems, including the halting problem" as an outcome. There is often not enough time to cover the halting problem in CSE 625 and so we deleted it as an outcome. The halting problem is discussed extensively in CSE 725.
The previous report did not include outcome 4, "Be familiar with the pumping lemma for regular languages and its use to show that certain languages are not regular". The idea that certain problems cannot be solved given limited computational resources is central to theoretical computer science. Moreove, the ability to prove that a problem cannot be solved is at first astonishing. The pumping lemma serves as an introduction to this central theme of theoretical computer science and so we included familiarity with the pumping lemma as a specific outcomeMost students in CSE 680 achieve mastery of analyzing simple iterative and recursive algorithms and solving simple recurrence relations (obectives 1-3). Many students master use of asymptotic notation as well (objective 4). However, some students demonstrate that they are able to use asymptotics in simple situations or in situations that are very similar to examples done in class but are unable to generalize to different problems.
Difficult, open-ended homework problems are a hallmark of any serious algorithms class. Many of these problems involve designing an algorithm to solve some problem (often with a stated run-time bound). As such, any student who successfully completes CSE 680 will be familiar with designing divide-and-conquer (objective 5) and graph (objective 6) algorithms. While students will have differing degrees of success at this task, most students are able to design reasonable algorithms for non-trivial problems.
In a typical offering of CSE 680 students will see average case analysis of the Quicksort algorithm and may work on a homework problem on that topic.
CSE 541: The learning outcomes of this course are:
Learning Outcome |
Relation to BS-CSE Program Outcomes | |||||||||||||
(a) | (b) | (c) | (d) | (e) | (f) | (g) | (h) | (i) | (j) | (k) | (l) | (m) | (n) | |
LO1 | XXX | |
|
|
|
|
XX | |||||||
LO2 | XXX | |
|
X | |
|
|
|
|
X | ||||
LO3 | XXX | |
|
X |
|
|
|
|
|
X | |
|
||
LO4 | XXX | |
|
X |
|
|
|
|
|
X | |
|
||
LO5 | XXX | X | X | |||||||||||
LO6 | XXX | X | XX | X | ||||||||||
LO7 | XXX | |||||||||||||
LO8 | XXX | X | ||||||||||||
LO9 | XXX | X | XX | X | ||||||||||
LO10 | XXX | X | X | X | ||||||||||
LO11 | XXX | XX | X | X | X | X |
Summary: Recent POCATs have included a question on relative error directly related to 541 topics. About 70% of the students answer this question correctly. Almost all the incorrect answers were mistakes in the calculation of relative error, not fundamental mistakes in the understanding of the concept. We think student performance is satisfactory on this question.
Learning Outcome |
Relation to BS-CSE Program Outcomes | |||||||||||||
(a) | (b) | (c) | (d) | (e) | (f) | (g) | (h) | (i) | (j) | (k) | (l) | (m) | (n) | |
LO1 | XXX | X | |
X | |
|
|
|
X | XX | X | X | ||
LO2 | XXX | |
X | |
X | |
|
|
|
|
X | XX | X | X |
LO3 | XXX | X |
|
X |
|
|
|
|
|
X | XX | X |
X |
|
LO4 | XXX | X |
|
X |
|
|
|
|
|
X | XX | X |
X |
|
LO5 | XXX | X | |
X | |
|
|
|
X | XX | X | X |
Summary: POCATs include two questions related to CSE 625, one on writing a regular expression for a language and one on writing a grammar for a language. About 70% of the students answer the regular expression question correctly. About 90% of the students answer the grammar question correctly. We think student performance on these two questions is very good.
Learning Outcome |
Relation to BS-CSE Program Outcomes | |||||||||||||
(a) | (b) | (c) | (d) | (e) | (f) | (g) | (h) | (i) | (j) | (k) | (l) | (m) | (n) | |
LO1 | XXX | XX | |
XXX | |
|
|
X | |
XX | XX | XX | XX | |
LO2 | XXX | XX |
|
XXX | |
|
|
X |
|
XX | XX | XX | XX | |
LO3 | XXX | XX | |
|
XXX |
|
|
|
X |
|
XX | XX | XX |
XX |
LO4 | XXX | |
|
XXX |
|
|
|
X |
|
XX | XX | XX |
XX |
|
LO5 | XXX | |
XXX | |
|
|
X | |
XX | XX | XX | XX | ||
LO6 | XXX | XX | |
XXX | |
|
X |
|
XX | XXX | XX | XX | ||
LO7 | XXX | XX | |
XXX | X | XX | XXX | XX | XX | |||||
LO8 | XXX | |
XXX | X | XX | XX | XX | XX |
Course no. | Coordinator | Recent Instructors |
---|---|---|
Math 366 | Carlson | Carlson, Geline, Samansky, McGinnis |
Math 566 | Carlson | Conrad, Derdzinski, Geline, Wilson |
CSE 541 | Wenger | Belkin, Crawfis, Lee, Malkiman, Sinha |
CSE 625 | Supowit | Belkin, Dey, Long, Supowit, Y. Wang |
CSE 680 | Mathias | Mathias, Lai, Wenger |
CSE 725 | Long | Long, Supowit |
CSE 780 | Lai | Dey, Lai, Y. Wang, Wenger |
People involved in preparing this report: Misha Belkin, David Mathias, Ken Supowit, Rephael Wenger.