Foundations Course Group Status Report


Foundations Courses
Course no. Title Credit 
Hours
Reqd(R)/
Elective (E)
Math 366
Discrete Mathematical Structures I
3
R
Math 566
Discrete Mathematical Structures II
3
R
CSE 541
Elementary Numerical Methods
3
R
CSE 625
Introduction to Automata and Formal Languages
3
R
CSE 680
Intro to Analysis of Algorithms and Data Structures
3
R
CSE 723 Introduction to Cryptography 3 E
CSE 725
Computability and Unsolvability
3
E
CSE 780
Analysis of Algorithms
3
E

Summary:  



1. Summary

The courses in this group provide students with basic mathematical and analytical tools used in computer science and introduce students to the basic concepts at the foundations of computer science.  Techniques and concepts introduced in these courses are used in numerous application areas.  While practitioners of computer science could function without formally studying these concepts, the cost would be a reduction in rigor and an increase in ad-hoc, intuitive reasoning. 

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.

2. Detailed Analysis

Section 2.1 describes the individual courses in the group, including their relations to the other courses in the group as well as to the rest of the curriculum. Section 2.2 contains an evaluation of each course to see how well it meets its intended learning outcomes (LOs). Section 2.3 considers the relation between the LOs of the various courses and the (proposed new) BS-CSE program outcomes (listed in Section 2.3). Section 2.4 summarizes the main changes we have made in the courses since the previous report.

2.1 Summary of the Courses

2.1.1 Descriptions

Math 366: Discrete Mathematical Structures I  is a discrete mathematics course taught by mathematics faculty.  It is required  of all undergraduate majors in the CSE Department.  The main topics covered in the course are logic and Boolean algebra, elementary set theory, functions and relations, basic counting and mathematical induction. Current textbook: Discrete Mathematics with Applications, 3rd Edition, Susanna S. Epp.   While the faculty of the Math Department have been responsive to input from CSE on course content, many students not majoring in computer science take Math 366 limiting our ability to tailor the course to our programs. CSE faculty are in regular contact with the faculty coordinators of this course to ensure that it continues to meet the needs of computer science majors.

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.

2.2.2 Relation of the courses to the rest of the CSE program

Math 366: Discrete Mathematical Structures I:  Prerequisites: Math 132 or Math 152 (second quarter  calculus).
Prerequisite (or corequisite) for: CSE 321, 625, 630, 670, 675, 680 and 755.

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.

2.2 Evaluation of courses

Note: The syllabus of each course lists a set of intended learning outcomes (LOs). Each LO specifies an item of knowledge and/or skill at one of three levels of performance, mastery, familiarity, or exposure. Mastery means the student should be able to apply the knowledge or skill even in a new context, and even when not specifically instructed to do so; familiarity means the student will be able to apply it even in a new context, when instructed to do so; and exposure means the student will have heard the term and/or seen it used, but may not be able to discuss or use it effectively without further instruction.
CSE 541 learning outcomes
  1. Master using IEEE single precision floating point arithmetic standard.
  2. Master single variable root finding.
  3. Master numerical differentiation.
  4. Master numerical integration.
  5. Master Gaussian elimination with scaled partial pivoting.
  6. Be familiar with loss of significant digits in numerical calculations.
  7. Be familiar with polynomial interpolation.
  8. Be exposed to bounding errors in differentiation, integration and interpolation.
  9. Be exposed to iterative solutions of linear systems.
  10. Be exposed to least squares fitting.
  11. Be exposed to Monte Carlo simulation.
CSE 541 acquaints students with basics of numerical analysis. The students typically master using single precision arithmetic standards and understanding its limitations. They will also gain understanding of loss of precision in numerical computations and methods for its avoidance (outcomes 1,6).

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.

Changes from the previous report
Learning outcomes in the previous report contained more detailed descriptions of exactly which algorithms were covered.  For instance, the previous report listed the bisection method, Newton's method and the secant method as the root finding methods.  The Foundations Course Group felt that the topics were important but not the particular algorithms covered.  We removed the particular algorithms to give instructors freedom to select exactly which algorithms to cover and to emphasize.

 CSE 625 learning outcomes
  1. Master using regular expressions, and finite state machines.
  2. Master using push-down automata.
  3. Master using regular and context-free grammars.
  4. Be familiar with the properties of regular and context-free languages.
  5. Be familiar with the pumping lemma for regular languages and its use to show that certain languages are not regular.
  6. Be familiar with using Turing machines as a general computational model.
CSE 625 is an introductory course on languages and computation. Much of the discussion revolves around the notions of regular and context-free languages, deterministic and non-deterministic finite state and push-down automata. In the process students master regular expressions and the corresponding finite-state machines and context-free languages and the corresponding finite automata (outcomes 1,2,3). They also are familiarized with the techniques for showing that certain languages are not regular (outcome 4).

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.

Changes from the previous report

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 outcome
 CSE 680 learning outcomes
  1. Master analyzing running time of for and while loops.
  2. Master analyzing running time of simple iterative algorithms.
  3. Master analyzing running time of simple recursive algorithms.
  4. Master solving simple recurrence relations.
  5. Master using asymptotic notation.
  6. Be familiar with designing divide-and-conquer algorithms.
  7. Be familiar with designing graph algorithms.
  8. Be exposed to average case analysis.
The choice of algorithms and data structures used to illustrate these topics are left to the discretion of the instructor.

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

Changes from the previous report
The previous report contained four outcomes which were listed as "optional" or "time permitting".  While instructors may still cover these topics, the foundations course group did not think it appropriate to include them as CSE 680 learning outcomes. 

2.3 Relation to BS-CSE Program Outcomes


The BS-CSE program outcomes are:
  1. an ability to apply knowledge of computing, mathematics including discrete mathematics as well as probability and statistics, science, and engineering;
  2. an ability to design and conduct experiments, as well as to analyze and interpret data;
  3. an ability to design, implement, and evaluate a software or a software/hardware system, component, or process to meet desired needs within realistic constraints such as memory, runtime efficiency, as well as appropriate constraints related to economic, environmental, social, political, ethical, health and safety, manufacturability, and sustainability considerations;
  4. an ability to function effectively on multi-disciplinary teams;
  5. an ability to identify, formulate, and solve engineering problems;
  6. an understanding of professional, ethical, legal, security and social issues and responsibilities;
  7. an ability to communicate effectively with a range of audiences;
  8. an ability to analyze the local and global impact of computing on individuals, organizations, and society;
  9. a recognition of the need for, and an ability to engage in life-long learning and continuing professional development;
  10. a knowledge of contemporary issues;
  11. an ability to use the techniques, skills, and modern tools necessary for practice as a CSE professional.
  12. an ability to analyze a problem, and identify and define the computing requirements appropriate to its solution;
  13. an ability to apply mathematical foundations, algorithmic principles, and computer science theory in the modeling and design of computer-based systems in a way that demonstrates comprehension of the tradeoffs involved in design choices;
  14. an ability to apply design and development principles in the construction of software systems of varying complexity.


CSE 541: The learning outcomes of this course are:

  1. Master using IEEE single precision floating point arithmetic standard.
  2. Master single variable root finding.
  3. Master numerical differentiation.
  4. Master numerical integration.
  5. Master Gaussian elimination with scaled partial pivoting.
  6. Be familiar with loss of significant digits in numerical calculations.
  7. Be familiar with polynomial interpolation.
  8. Be exposed to bounding errors in differentiation, integration and interpolation.
  9. Be exposed to iterative solutions of linear systems.
  10. Be exposed to least squares fitting.
  11. Be exposed to Monte Carlo simulation.
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  
   
 
 
 
 
 
     
LO3  XXX    
 
 X
 
 
 
 
 
   
 
LO4 XXX    
 
X
 
 
 
 
 
   X  
 
LO5 XXX                 X      
LO6 XXX X                    XX   X  
LO7 XXX                          
LO8 XXX                       X  
LO9 XXX                   XX X  
LO10 XXX X     X           X      
LO11 XXX XX               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.

 


CSE 625: The learning outcomes of this course are:
  1. Master using regular expressions, and finite state machines.
  2. Master using context-free languages, and push-down automata.
  3. Master using regular and context-free grammars.
  4. Be familiar with the pumping lemma for regular languages and its use to show that certain languages are not regular.
  5. Be familiar with using Turing machines as a general computational model.

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




CSE 680: The learning outcomes of this course are:
  1. Master analyzing running time of for and while loops.
  2. Master analyzing running time of simple iterative algorithms.
  3. Master analyzing running time of simple recursive algorithms.
  4. Master solving simple recurrence relations.
  5. Master using asymptotic notation.
  6. Be familiar with designing divide-and-conquer algorithms.
  7. Be familiar with designing graph algorithms.
  8. Be exposed to average case analysis.

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

Summary:  The learning outcomes for CSE680 are updated in this report to reflect the coverage given by the majority of faculty who teach the course.  We have eliminated several topics that served no purpose since no one has covered them in any offering in recent memory.

The POCAT exam has typically included two questions designed to gauge students’ understanding of CSE680 material.  These questions ask students to evaluate the asymptotic running time of a short code fragment.  Performance on the more generic of these problems has been quite good.  On a problem dealing with search time in a binary search tree, however, there has been less success.  The question requires students to recognize that not all binary trees are balanced and that non-balanced binary trees can have O(n) insertion time.  It is our opinion that the question is a bit too subtle and should be replaced on future versions of the POCAT.

2.4 Changes since last report

The material at the foundations of computer science (at least at the undergraduate level) is very stable and has changed little over the past ten years.  While we are constantly searching for new texts which provide clearer expositions of  this material, the topics covered by those texts is very standard.  There have been no major changes to our foundations courses since the last report.

Section 2.4 includes changes to the learning outcomes for CSE 541, CSE 625 and CSE 680.  The new outcomes are better representations of the outcomes expected from each course.

Computational cryptography is a subject with deep foundational roots and significant, relevant applications.  A new course has been created in computational cryptography.

Design and analysis of algorithms is an extremely broad field, with numerous subareas.  A new course, Advanced Algorithms, covers many algorithms and techniques omitted from CSE 680 and CSE 780, the other algorithms courses.  Advanced Algorithms has been piloted but has not yet been approved as a permanent CSE course.

3. Conclusions

The courses in the Foundations Course Group provide students with an important theoretical context for the more practical material they see more often and tend to prefer. These courses help the BS-CSE program achieve several of the program outcomes. Faculty teaching and coordinating these courses continue to evaluate them and change them to ensure that they serve our students as best possible.


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.


Rephael Wenger

Revised: August, 2009.