Foundations Course Group Status Report


Foundations Courses
Course no. Title Credit 
Hours
Reqd (R)/ 
Elective (E)
Math 366
Discrete Mathematical Structures I
3
R
CIS 541
Elementary Numerical Methods
3
R
CIS 625
Introduction to Automata and Formal Languages
3
R
CIS 642
Numerical Linear Algebra
3
E
CIS 680
Data Structures
3
R
CIS 725
Computability and Unsolvability
3
E
CIS 727
Computational Complexity
3
E
CIS 780
Analysis of Algorithms
3
E


1. Summary

The courses in foundations of computer science expose students to the basic theory underlying the field of computer science. In essence, they teach students what makes computer science a "science."  They also provide support for the many systems and application oriented areas of computer science. They build skills in mathematics and algorithm design for use in other courses and design projects; they familiarize students with some basic concepts such as formal grammars and asymptotic notation, which appear in many different computer science areas and courses; they develop the ability of students to reason rigorously and formally and to solve problems in the domain of computer science.

2. Detailed Analysis

The CIS department requires or offers the following courses related to the foundations of computer science: Math 366, CIS 625, CIS 680, CIS 725, CIS 727, CIS 780.  It also offers two courses in numerical analysis: CIS 541 and CIS 642.  All CIS undergraduate majors are required to take Math 366, CIS 541, CIS 625, and CIS 680.  All CIS graduate students are required to take CIS 725 and CIS 780.

Section 2.1 describes the individual courses in the group. Section 2.2 explains how the group is related to the rest of the CSE program. Section 2.3 explains how the group helps meet a range of CSE and ABET objectives. Section 2.4 provides information on the feedback we have received from students, recruiters, etc. about the courses in the group. Section 2.5 summarizes the changes we are considering in the various courses.

2.1 Summary of the courses

Math366: Discrete Mathematical Structures I  is a discrete mathematics course usually taught by mathematics faculty.  It is required  of all CIS undergraduate majors.  The course as currently taught emphasizes basic set theory, logic, predicate calculus and induction.   It is subject to ongoing discussion and review.  Because all areas of computer science have some mathematical foundation, the  CIS faculty have a strong interest in seeing that the material is well taught and that it gives student the proper mathematical foundations for courses in computer science.  CIS faculty are extensively consulted on the content and design of the course. However, because the course is not taught by the computer science department and because a large number of the students taking the course are not CIS majors, CIS does not have complete control over the quality of the course.  In addition, this course is a prerequisite for many other courses in computer science, not all of which need the same set of mathematical skills.  Thus, there is continual discussion among the computer science faculty about the emphasis of this course.  A member of the CIS faculty (Dr. Ken Supowit) is currently teaching one section of the course (Au99) to provide suggestions on the course content and focus.

CIS541: Elementary Numerical Methods  is a survey of basic numerical methods.  The course covers number systems and errors of finite representation, solution of a single non-linear equation, interpolation numerical integration, and solution of linear systems.  In the final weeks, either interval arithmetic or least squares curve fitting are covered.

CIS625: Introduction to Automata and Formal Languages is a standard undergraduate course in automata theory and formal languages.  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.

CIS642: Numerical Linear Algebra is a continuation of CIS541 focusing on numerical linear algebra.  It covers iterative methods for the solution of linear systems, computation of eigenvalues and eigenvectors, linear programming-simplex method and use of standard mathematical software libraries.

CIS680: Data Structures is a course in advanced data structures, although the course content has varied somewhat depending on the instructor.  It is currently under revision.  The proposed revision refocuses the course on basic algorithm analysis, with analysis of data structures as a subtopic.  In particular, undergraduate students should be able to analyze the  asymptotic running time of while and for loops, simple recursive programs, operations on binary search trees, and simple graph algorithms.

CIS725: Computability and Unsolvability is a graduate course in decidability and NP-completeness.  It is required of all CIS graduate students.  The course covers Turing machines, Church's thesis, recursive and recursively enumerable languages, self replicating programs, polynomial time and NP-completeness.  The material on  NP-completeness was recently moved from CIS 780 to CIS 725 where it naturally fits.  Recursive function theory was dropped from CIS 725.

CIS727: Computational Complexity is a continuation of complexity theory from CIS 725.  It covers a variety of complexity classes, including space complexity, randomized complexity classes, public key cryptosystems and PSPACE.  The course is offered every other year.

CIS780: Analysis of Algorithms is a graduate course in algorithms.  It is required of all CIS graduate students.  The course covers divide and conquer algorithms, greedy algorithms, dynamic programming, and graph algorithms. The material on NP-completeness was recently moved from CIS 780 to CIS 725 where it naturally fits.

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

Math366: Discrete Mathematical Structures I:  Prerequisites for Math 366 are Math 132 or Math 152, second quarter  calculus.  As a basic discrete mathematics course, Math 366 is a prerequisite or corequisite for many CIS courses including CIS 321, 570,  625, 630, 675, and 680. CIS 321 includes formal program specification which requires that students be able to understand, write and reason with formal logic and notation. In CIS 570 students must be able to use formal logic notation to specify database queries. Students in CIS 625 must be familiar with proofs and proof techniques, including proof by induction.
Students in CIS 675 need boolean logic to understand the design of computer architectures.  To understand algorithm design and analysis, students in CIS 680 need to be familiar with proof and proof techniques and with basic counting arguments.

CIS541: Elementary Numerical Methods: Prerequisites for CIS 541 are CIS 221, computer programming, and Math 153, third quarter calculus.  Non-CIS majors also take this course and substitute CIS 201 or EG 167 for the CIS 221 requirement.

CIS625: Introduction to Automata and Formal Languages: Prerequisites for CIS 625 are CIS 321 and Math 366. CIS 625 is a prerequisite for CIS 655, programming languages, and CIS 725, computability and unsolvability.  CIS 725 is a continuation of the material in CIS 625.  Students in CIS 655 need to be familiar with formal languages, particularly with formal grammars.

CIS642: Numerical Linear Algebra: Prerequisites for CIS 642 are CIS 541 and Math 568 or 571, linear algebra.

CIS680: Data Structures: Prerequisites for CIS 680 are CIS 560 and CIS 570, Stat 427 and Math 366.  CIS 680 is a prerequisite for CIS 780.

CIS725: Computability and Unsolvability: The prerequisite for CIS 725 is CIS 625.  CIS 725 is continuation of the material in CIS 625.

CIS727: Computational Complexity: The prerequisite for CIS 727 is CIS 725.  CIS 727 is a continuation of the material for CIS 725.

CIS780: Analysis of Algorithms: The prerequisite for CIS 780 is CIS 680.

2.3 Relation to CSE and ABET objectives

This group of courses strongly contributes toward meeting CSE objectives 1a, 1b and 4b;  and moderately toward objectives 1b and 2a.

The courses in this group play a key role in meeting both CSE program objectives as well as ABET Criterion 3 objectives. In Section 2.3.1 we consider the CSE objectives that this course group helps us meet, and in Section 2.3.2 we consider the ABET objectives.

The courses in this group play a key role in meeting both CSE program objectives as well as ABET Criterion 3 objectives. In Section 2.3.1 we consider the CSE objectives that this course group helps us meet, and in section 2.3.2 we consider the ABET objectives.

2.3.1 CSE Objectives

Objective 1.To provide graduates with a thorough grounding 
in the key principles and practices of computing, and in 
the basic engineering, mathematical, and scientific principles
that underpin them. Students will: 
  a.Demonstrate proficiency in the areas of software 
    design and development, algorithms, operating systems, 
    programming languages, and architecture. 
  b.Demonstrate proficiency in relevant aspects of mathematics, 
    including discrete mathematics, as well as the appropriate 
    concepts from physics and electrical circuits and devices. 
  c.Successfully apply these principles and practices to a 
    variety of problems. 

The foundation courses primarily focus on meeting this objective.  These courses all involve a large amount of  discrete mathematics as in objective 1b.  The two numerical analysis courses are, of course, also heavily mathematical. CIS 680 and CIS 780 both focus on algorithm design and analysis as in objective 1a.  Both the foundation courses and the numerical analysis courses involve large amounts of problem solving.
Objective 2.To provide graduates with an understanding 
of additional engineering principles, and the mathematical 
and scientific principles that underpin them. Students will: 
   a.Demonstrate an understanding of differential and 
     integral calculus, differential equations, physics 
     and several areas of basic engineering sciences. 
   b.Have the ability to work with others and on 
     multi-disciplinary teams in both classroom and 
     laboratory environments.
Students in the numerical analysis courses, CIS 541 and CIS 642, study methods for numerical integration and for solving differential equations.
Objective 3.To provide graduates with an understanding of 
the overall human context in which engineering and 
computing activities take place. Students will: 
  a.Demonstrate an ability to communicate effectively. 
  b.Obtain familiarity with basic ideas and contemporary 
    issues in the social sciences and humanities. 
  c.Obtain an understanding of social, professional 
    and ethical issues related to computing. 

The foundations courses and the numerical analysis courses do not significantly contribute to objective 3.
Objective 4.To prepare graduates for both immediate 
employment in the CSE profession and for admission to 
graduate programs in computing. 
   a.A large fraction of graduates will be immediately 
     employed in high-technology companies that utilize 
     their computing education. 
   b.Strong graduates from the program will be prepared 
     to enter good graduate programs in CSE

A strong grounding in foundations is a prerequisite to admission to good CSE graduate programs. In particular, the material in CIS 625, CIS 680, and to a lesser extent, CIS 725 and CIS 780, is often a good part of graduate entrance examinations in computer science.
 
Summary of Relation to CSE Objectives
Course no. CSE
1a
CSE
1b
CSE
1c
CSE
2a
CSE
2b
CSE
3a
CSE
3b
CSE
3c
CSE
4a
CSE
4b
Math 366   XXX    XXX            
CIS 541
XX
XXX
XX
XX 
 
 
 
 
XX
XX
CIS 625
XX
XXX
XX
   
 
 
 
 
XXX
CIS 642
XX
XXX
XX
 XX
 
 
 
 
X
XX
CIS 680
XXX
XXX
XX
         
X
XXX
CIS 725
XX
XXX
XX
           
XX
CIS 727
XX
XXX
XX
           
XX
CIS 780
XXX
XXX
XX
         
X
XX

2.3.2 ABET Criterion 3: Program Outcomes and Assessment


Engineering programs must demonstate their graduates have:

   a.  an ability to apply knowledge of mathematics, science, and engineering
   b.  an ability to design and conduct experiments, as well as analyze and interpret data
   c.  an ability to design a system, component, or process to meet desired needs
   d.  ability to function on multi-disciplinary teams
   e  an ability to identify, formulate, and solve engineering problems
   f.  an understanding of professional and ethical responsibility
   g.  an ability to communicate effectively
   h.  the broad education necessary to understand the impact of engineering solutions in a global and societal context
   i.  a recognition of the need for, and an ability to engage in life-long learning
   j.  a knowledge of contemporary issues
   k.  an ability to use techniques, skills, and modern engineering tools necessary for engineering practice.

The foundation courses contribute strongly to ABET criterion 3a; and moderately to criteria 3c, 3e, 3i and 3k.   The numerical analysis courses contribute strongly to criterion 3a;  and moderately to criteria 3b, 3c, 3e, 3i, and 3k.  The foundation courses and the numerical analysis courses are heavily oriented toward learning and applying mathematics to problems computer science.  They involve a substantial amount of problem solving on homeworks and exams.
 

Summary of Relation to ABET Objectives
Course no. ABET
3a
ABET
3b
ABET
3c
ABET
3d
ABET
3e
ABET
3f
ABET
3g
ABET
3h
ABET
3i
ABET
3j
ABET
3k
Math 366 XXX       X            
CIS 541
XXX
XX
XX
 
X
         
XX
CIS 625
XXX
     
XX
           
CIS 642
XXX
XX
XX
 
X
         
XX
CIS 680
XXX
 X
XX
 
XX
         
XX
CIS 725
XXX
     
XX
           
CIS 727
XXX
 
 
 
XX
     
X
   
CIS 780
XXX
 
XX
 
XX
 
 
 
 
 
XX

2.4 Feedback

On the basis of comments in SET's (Student Evaluation of teaching) of the individual courses,  many students enjoy the intellectural rigor and challenge of these courses while others find them too theoretical and/or difficult.  Student satisfaction often depends upon the mathematical aptitude of the individual student.

2.5 Possible changes

As mentioned above, Math 366 is subject to ongoing discussion and review.  Because the course is not taught by the CIS department and because a large number of the students taking the course are not CIS majors, CIS does not have complete control over the quality of the course. In addition, this course is a prerequisite for many other courses in computer science, not all of which need the same set of mathematical skills.  Thus, there is continual discussion among the computer science faculty about the emphasis of this course.  A member of the CIS faculty is currently teaching one section of the course, to provide suggestions on the course content and focus. The CIS Undergraduate Studies Committee is considering requiring that CSE undergraduates take an additional discrete mathematics course. This additional course would focus on combinatorial mathematics and graph theory.

The recent revision in the beginning software sequence (CIS 221, 222, 321) has moved a considerable amount of software engineering material that had to be covered in CIS 680 to the beginning sequence, especially CIS 321. A proposed revision focuses CIS 680 more sharply on algorithm design and analysis issues.  The proposed revision makes CIS 680 and CIS 780 more cohesive, similar to other 600 and 700 level pairs.

CIS 725 and CIS 780 recently underwent minor changes with material on NP-completeness moved from CIS 780 to CIS 725.
 

3. Conclusions

The courses in foundations and numerical analysis are key components of the CSE program and help us meet a number of objectives of the program as well as a number of the ABET Criterion 3 objectives.  Some of the courses are currently under revision as we attempt to strengthen and focus our undergraduate curriculum.
 
Course no. Coordinator Recent Instructors
Math 366 Dougherty Carlson, Dougherty, Friedman, Supowit
CIS 541 Moore Moore
CIS 625 Wenger Dey, Gurari, Wenger 
CIS 642
Supowit Supowit
CIS 680
 Wenger
Gurari, Mathias, Ogden, Wenger 
CIS 725
 Supowit
 Supowit, Wenger
CIS 727
 Wenger
Wenger 
CIS 780
Lai Lai, Supowit

People involved in preparing report: Tamal Dey, Steve Lai, Ken Supowit, Rephael Wenger

Date of report: Nov. 2, 1999 


Rephael Wenger

Oct. 22, 1999.