UB Undergraduate Catalog 2006-2007: Computer Science

Computer Science

Department of Computer Science and Engineering

School of Engineering and Applied Sciences
201 Bell Hall
North Campus
Buffalo, NY 14260-2000

Phone: 716.645.3180
Fax: 716.645.3464
Email: cse-uginfo@cse.buffalo.edu
Web: www.cse.buffalo.edu

Bharat Jayaraman
Chair

Chunming Qiao
Director of Undergraduate Studies

Helene Kershner
Assistant Chair

Jaynee Straw
Undergraduate Advisor

About the Program

Computer science is the systematic study of algorithmic methods for representing and transforming information, including their theory, design, implementation, application, and efficiency. The discipline emerged in the 1950s from the development of computability theory and the invention of the stored-program electronic computer. The roots of computer science extend deeply into mathematics and engineering. Mathematics imparts analysis to the field; engineering imparts design.

The main branches of computer science are:

Algorithms-the study of effective and efficient procedures for solving problems on a computer.

Theory of Computation-the meaning and complexity of algorithms, as well as the limits of what can be computed in principle.

Artificial Intelligence-the computational understanding of what is commonly called intelligent behavior, as well as the creation of artifacts that exhibit such behavior.

Computer Architecture-the structure and functionality of computers, as well as their implementation in terms of electronic language.

Multimedia-the study of the representation, communication, and effective use of data derived from multiple sources, including text, audio, graphics and video.

Software Systems-the study of the structure and implementation of large programs, including the study of programming languages and paradigms, programming environments, compilers, and operating systems.

Other important topics in computer science include computer graphics, databases, networks and protocols, numerical methods, operating systems, parallel computing, simulation and modeling, and software engineering.

Degree Options

The Department of Computer Science and Engineering offers both traditional BA and BS degrees, in addition to a combined program permitting highly qualified students to graduate in four or five years with a combined BS/MS degree in computer science. In conjunction with the School of Management, the Department of Computer Science and Engineering offers a five-year program leading to a combined degree in computer science and business administration (BS/MBA) that reduces by one year the usual pattern of a four-year undergraduate degree and a two-year MBA program. A BS degree in computational physics is offered jointly with the Physics department.

The university offers a bachelor of science degree in bioinformatics and computational biology, with options for a concentration in biology, biophysics, computer science and engineering, or mathematics. Please refer to the bioinformatics and computational biology program for further details.

Acceptance Information

Students may apply for admission upon successful completion of prerequisite courses, or may be considered for provisional admission if 60 or more credit hours will be completed in the semester in which student is applying.

Advisement

Upon admission, the Department of Computer Science and Engineering writes to inform students of their faculty advisors. Students should make an appointment with their advisor as soon as possible to discuss a program of study and to choose between the BA and the BS program. Students must see their advisor at least once a semester thereafter. Under current departmental guidelines, students may freely switch degree programs (from B.A. to B.S. or from B.S. to B.A.) at any time, but must complete all appropriate courses.

A minimum GPA of 2.5 in technical courses is required to remain in good standing as well as graduate. This is the GPA among all CSE, EAS, MTH, and STA courses used below as required courses, except those courses taken to satisfy the science sequence requirement.

No required courses may be taken Pass-Fail or Satisfactory-Unsatisfactory.

Prerequisites are satisfied with a grade of C- or better.

Transfer Policy

Transfer students must first apply to the university and meet the university transfer-admission GPA requirements before consideration for admission to the Department of Computer Science and Engineering. Computing courses taken outside the department, and offered as substitutes for computer science courses, are evaluated individually by the Undergraduate Affairs Committee. Most courses taken from a recognized college-level computer science department are acceptable. Data-processing courses are generally not acceptable as substitutes for any computer science course. Experience has shown that any course with a specific programming language in its title is often a skills course rather than a computer science course. The student must provide evidence to help the department determine whether courses taken at another institution are equivalent to UB courses; course syllabi are generally preferable to catalog descriptions as catalog descriptions do not provide enough detail for accurate evaluation. Additional information on course equivalencies may be found on the university�s transfer and articulation website at: http://taurus.buffalo.edu.

Opportunities for Undergraduate Research and Practical Experience

As part of their undergraduate education, students are encouraged to participate in work experience classes and research opportunities.

Co-Ops

Work experience is available through the Engineering Career Institute program in the School of Engineering and Applied Sciences, as well as departmental co-op and internship classes. The Engineering Career Institute (EAS 396, 1 academic credit) provides career-effectiveness skills and co-op placement assistance during the junior year. This may be followed by one to three co-op work experiences (EAS 496, 2 academic credit hours). Co-ops may not be used to satisfy the requirements for the B.S. Descriptions of co-op courses may be found at http://undergrad-catalog.buffalo.edu/academicprograms/eas.shtml.


Internships

Internship opportunities include a field experience working on a computer science and engineering project in a real-world setting under the joint direction of a supervisor from industry and a faculty advisor from the Department of Computer Science and Engineering. Projects selected should integrate the material learned in academic courses. Upon completing the internship (CSE 496), the student is expected to have fulfilled an internship contract. Only P/F grades will be given; therefore, internships may not be used to satisfy the requirements for the B.S. program.

Research

Undergraduate research experiences are available for course credit (Undergraduate Research and Creative Activity or Independent Study) or as a paid assistant in the research laboratory of a faculty member. The Center for Undergraduate Research and Creative Activity serves as a clearing house for information regarding undergraduate research opportunities.

Independent Study

Students pursue an area of computer science and engineering in which they are particularly interested. (May not be used to satisfy the requirements for the B.S.)

Career Opportunities/Further Study

Graduates of this program are in high demand on the job market. The National Bureau of Labor Statistics ranks computer engineering as one of the fastest growing job categories in the United States. Computer engineers find employment in the computer, communication, instrumentation, and semiconductor industries in such areas as computer hardware, software, information processing, networking, telecommunication, and product design, in addition to traditional areas of engineering and computer science, such as electronics, aerospace, defense, business information systems, instrumentation, and biomedical engineering.


Notable Program Features

Extracurricular Activities

Computer Science and Engineering Undergraduate Student Association
Institute of Electronic and Electrical Engineers (IEEE) Student Chapter
Association for Computing Machinery (ACM) Student Chapter

See the UB Student Association


Computer Science - B.S.

Acceptance Criteria

Minimum GPA of 2.0 overall.
Minimum GPA of 2.5 in CSE 116 and MTH 142 (unless exempted by SAT score, Advanced Placement credits, or transfer credits).

Prerequisite Courses

CSE 115 Intro to Computer Science for Majors I
CSE 116 Intro to Computer Science for Majors II
MTH 141 College Calculus I
MTH 142 College Calculus II

Required Courses

CSE 191 Intro. to Discrete Structures
CSE 241 Digital Systems
CSE 250 Data Structures
CSE 305 Intro. to Programming Languages
CSE 331 Intro. to Algorithm Analysis & Design
CSE 341 Computer Organization
CSE 396 Intro. to the Theory of Computation
CSE 421 Intro. to Operating Systems
CSE 442 Software Engineering
One calculus-based probability or statistics course (e.g., EAS 305, MTH 411)
One CSE course in the Artificial Intelligence area:
CSE 463 Intro. to Knowledge Representation & Reasoning
CSE 467 Computational Linguistics
CSE 473 Intro. to Computer Vision & Image Processing
CSE 474 Intro. to Machine Learning
One CSE course in the Software Systems area:
CSE 321 Real-Time & Embedded Operating Systems
CSE 451 Program Development
CSE 462 Database Concepts
CSE 486 Distributed Systems
CSE 489 Modern Networking Concepts
One 400-level CSE course from any area (except CSE 494-CSE 499, a required CSE 400-level courses, or a course already used to satisfy the Artificial Intelligence or Software Systems areas above)
One mathematical course from any dept. (approval of CSE faculty advisor is required for course selection)
Any two-course science and engineering sequence (from Biology, Chemistry, Geology, Physics, or any department in the School of Engineering and Applied Sciences, except CSE)


Summary
Total required credit hours for the major: 77-80

See Baccalaureate Degree Requirements for general education and remaining university requirements.

Recommended Sequence of Program Requirements

FIRST YEAR
Fall CSE 115, MTH 141
Spring CSE 116, MTH 142, CSE 191

SECOND YEAR
Fall CSE 241, CSE 250, one calculus-based probability or statistics course (e.g., EAS 305, MTH 411)
Spring CSE 305, CSE 396, CSE 341

THIRD YEAR
Fall CSE 331, CSE 421, CSE 442
Spring mathematical course (approved by committee), CSE course (AI)

FOURTH YEAR
Fall CSE course (SYS), one science and engineering sequence course
Spring CSE 400-level course, one science and engineering sequence course

Computer Science - B.A.

Acceptance Criteria

Minimum GPA of 2.0 overall.
Minimum GPA of 2.5 in CSE 116 and MTH 142*

*Unless exempted by SAT score, Advanced Placement credits, or transfer credits.

Prerequisite Courses

CSE 115 Intro to Computer Science for Majors I
CSE 116 Intro to Computer Science for Majors II
MTH 141 College Calculus I
MTH 142 College Calculus II

Required Courses

CSE 191 Intro. to Discrete Structures
CSE 241 Digital Systems
CSE 250 Data Structures
CSE 305 Intro. to Programming Languages
CSE 341 Computer Organization
CSE 396 Intro. to the Theory of Computation
CSE 421 Intro. to Operating Systems
CSE 442 Software Engineering
One calculus-based probability or statistics course (e.g., EAS 305, MTH 411)
Any two-course science and engineering sequence (from Biology, Chemistry, Geology, Physics, or any department in the School of Engineering and Applied Sciences, except CSE).
Five external concentration courses [a total of five courses (at least 3 credits each) from the same academic department, at least two of which must be at or above the 300 level, and which are not from CSE (excludes any required courses used above or any courses numbered 494-499)].

Summary
Total required credit hours for the major: 74-82

See Baccalaureate Degree Requirements for general education and remaining university requirements.

Recommended Sequence of Program Requirements

FIRST YEAR
Fall- CSE 115, MTH 141
Spring- CSE 116, MTH 142, one external concentration course

SECOND YEAR
Fall- CSE 191, CSE 241, one science and engineering sequence course
Spring- CSE 250, one calculus-based probability or statistics course (e.g., EAS 305, MTH 411), one science and engineering sequence course

THIRD YEAR
Fall- CSE 305, CSE 341, one external concentration course
Spring- CSE 396, CSE 442

FOURTH YEAR
Fall- Two external concentration courses
Spring- CSE 421, one external concentration course

Computer Engineering - B.S.

About the Program

The computer engineering B.S. degree combines the study of mathematics, computer science, and electrical engineering. Computer engineering emphasizes those topics that bridge the electrical engineering and computer science disciplines: computer hardware, device-oriented software, and the interface between hardware and software. Unlike the Department of Computer Science and Engineering�s other undergraduate programs, this degree is offered through the School of Engineering and Applied Sciences. General education is integrated into the curriculum consistent with other engineering programs at UB. For further information, see the Computer Engineering entry in this catalog, http://undergrad-catalog.buffalo.edu/academicprograms/comeng.shtml.

Computer Science / Computer Science and Engineering - B.S./M.S.

Acceptance Criteria

Completion of at least 56 credits with a minimum GPA of 3.0 overall (five-year path), or a minimum GPA of 3.3 overall (four-year path) in all CSE and MTH courses.

Application must be accompanied by two letters of recommendation from our faculty.

It is recommended that candidates complete CSE 115, CSE 116, CSE 191, CSE 241, CSE 250, *MTH 141 or *MTH 142 and a calculus-based probability or statistics course prior to applying.

*Unless exempted by an SAT score, Advanced Placement credits, or transfer credits.

Advising Notes

In addition to university-wide graduation requirements, a minimum GPA of 3.0 is required for each of the following three sets of courses: all undergraduate CSE, EAS, MTH, and STA required courses; all graduate courses; CSE 505, CSE 521, one of [CSE 531, CSE 596], one of [CSE 563, CSE 573, CSE 574, CSE 655], one of [CSE 552, CSE 589, CSE 590, CSE 597].

No required courses may be taken Pass-Fail or Satisfactory-Unsatisfactory.

The grade for each course must be a B- or higher.

A minimum of 30 graduate credits is required by the Graduate School to satisfy M.S. university requirements. A total of 134 credits (both undergraduate and graduate) is required for this program, which includes the university general education courses.

Prerequisite Courses

CSE 115 Intro to Computer Science for Majors I
CSE 116 Intro to Computer Science for Majors II
CSE 191 Intro to Discrete Structures
CSE 241 Digital Systems
CSE 250 Data Structures
MTH 141 College Calculus I
MTH 142 College Calculus II
One calculus-based probability or statistics course (e.g., EAS 305, MTH 411)

Required Courses

CSE 331 Intro. to Algorithm Analysis & Design
CSE 341 Computer Organization
CSE 396 Intro. to the Theory of Computation
CSE 442 Software Engineering
One 300-level or higher MTH or STA course
Any two-course science and engineering sequence (from Biology, Chemistry, Geology, Physics, or any department in the School of Engineering and Applied Sciences, except CSE).
CSE 505 Fundamentals of Programming Languages
CSE 521 Intro to Operating Systems
CSE 531 Analysis of Algorithms or CSE 596 Intro. to the Theory of Computation
One of the following:
CSE 563 Knowledge Representation
CSE 573 Intro to Computer Vision & Image Processing
CSE 574 Introduction to Machine Learning
CSE 655 Introduction to Pattern Recognition
One of the following:
CSE 552 VLSI (Very Large Scale Integration) Testing
CSE 589 Modern Networking Concepts
CSE 590 Computer Architecture
CSE 597 Introduction to VLSI Electronics
One additional 500-level CSE course (but not CSE 503 Computer Science for Nonmajors I, CSE 504 Computer Science for Nonmajors II, or CSE 507 Object Oriented Applications & Systems Design (for nonmajors)
One additional 600-level CSE course
Capstone event (MS Thesis or MS Project)

Summary
Total required credit hours for the undergraduate portion: 58-60
Total required credit hours for the BS/MS: 88-90

See Baccalaureate Degree Requirements for general education and remaining university requirements.

Refer to the graduate school�s policies and procedures manual for requirements for master�s degree candidates.

Recommended Sequence of Program Requirements

Four-Year Path

FIRST YEAR
Fall CSE 115, MTH 141
Spring CSE 116, CSE 191, MTH 142

SECOND YEAR
Fall CSE 241, CSE 250, one calculus-based probability or statistics course (e.g., EAS 305, MTH 411)
Spring CSE 396, CSE 341, CSE 331

THIRD YEAR
Fall CSE 505, one 300-level or higher MTH or STA course, one science and engineering sequence course
Spring CSE 442; one of: CSE 563, CSE 573, CSE 574, CSE 655; one science and engineering sequence course

FOURTH YEAR
Fall CSE 521; one of: CSE 531, CSE 596; one 600-level CSE course
Spring one of: CSE 552, CSE 589, CSE 590, CSE 597; one 500-level CSE course (but not CSE 503, CSE 504, or CSE 507), Capstone event (M.S. Thesis or M.S. Project)

Five-Year Path

FIRST YEAR
Fall CSE 115, MTH 141
Spring CSE 116, MTH 142

SECOND YEAR
Fall CSE 191, CSE 241
Spring CSE 250, calculus-based probability or statistics course (e.g., EAS 305, MTH 411)

THIRD YEAR
Fall CSE 396, one 200-level or higher MTH or STA course, one science and engineering sequence course
Spring CSE 341, CSE 331, one science and engineering sequence course

FOURTH YEAR
Fall CSE 505, CSE 521
Spring CSE 442, one 500-level CSE course (but not CSE 503, CSE 504, or CSE 507)

FIFTH YEAR
Fall One of: CSE 563, CSE 573, CSE 574, CSE 655; one of: CSE 552, CSE 589, CSE 590, CSE 597; one 600-level CSE course
Spring One of: CSE 531, CSE 596; Capstone Event (M.S. Thesis or M.S. Project)

Computer Science/Business Administration - B.A./M.B.A

Acceptance Criteria

Prior admission into the CS major and completion of the GMAT exam during the junior year. Application to the School of Management and to this program during the junior year is considered in light of requirement of generally superior performance.

Advising Notes

In addition to university-wide graduation requirements, a minimum GPA of 2.5 in technical courses is required. This is the GPA among all CSE, EAS, MTH, and STA courses used below as required courses.

Students may apply for admission upon successful completion of prerequisite courses, or may be considered for provisional admission if 60 or more credit hours will be completed in a given semester.

No required courses may be taken Pass-Fail or Satisfactory-Unsatisfactory.

Prerequisites are satisfied with a grade of C- or better.

Prerequisite Courses

CSE 115 Intro to Computer Science for Majors I
CSE 116 Intro to Computer Science for Majors II
MTH 141 College Calculus I
MTH 142 College Calculus II

Required Courses

CSE 191 Intro to Discrete Structures
CSE 241 Digital Systems
CSE 250 Data Structures
CSE 305 Intro to Programming Languages
CSE 341 Computer Organization
CSE 396 Intro to the Theory of Computation
CSE 421 Intro to Operating Systems
CSE 442 Software Engineering
One calculus-based probability/statistics course (e.g., EAS 305, MTH 411)
Any two-course science and engineering sequence (from Biology, Chemistry, Geology, Physics, or any department in the School of Engineering and Applied Sciences, except CSE).
MGA 604 Financial Analysis and Reporting
MGB 601 Behavioral and Organizational Concepts of Management
MGE 601 Economics for Managers
MGF 631 Financial Management
MGM 625 Marketing Management
MGQ 606 Probability and Statistics for Managers
MGS 630 Operations and Service Management
MGS 641 Strategic Management
Ten MBA electives (a maximum of two of these electives may be taken from another department, e.g., CSE)
Two flex core courses

Summary
Total required credit hours for the undergraduate portion: 58-60
Total required credit hours for the BS/MBA: 118-120

See Baccalaureate Degree Requirements for general education and remaining university requirements.

Contact the School of Management for flex core course and electives options.

Refer to the School of Management�s MBA handbook for requirements for MBA candidates.

Recommended Sequence of Program Requirements

FIRST YEAR
Fall- CSE 115, MTH 141
Spring- CSE 116, MTH 142

SECOND YEAR
Fall- CSE 191, CSE 241, one science and engineering sequence course
Spring- CSE 250, one calculus-based probability/statistics course (e.g., EAS 305, MTH 411), one science and engineering sequence course

THIRD YEAR
Fall- CSE 305, CSE 341
Spring- CSE 396, CSE 421, CSE 442

FOURTH YEAR
Fall- MGA 604, MGB 601, MGE 601, MGQ 606, one flex core course
Spring- MGF 631, MGM 625, MGS 630, one M.B.A. elective, one flex core course

FIFTH YEAR
Fall- Five MBA electives
Spring- MGS 641, four MBA electives

Computer Science - Minor

About the Minor

Six CSE courses (excluding CSE 202, CSE 494 - CSE 499), with at least two at the 300- level or above. A minimum GPA of 2.5 overall in those courses is required. At least three courses must be taken at UB. A maximum of two of these courses may be used for a student�s major.

Admission into the computer science minor is based on completion of any three of the courses that constitute a minor in computer science with a minimum combined GPA of 2.5 in those courses. Applicants to the computer science minor should bring a copy of their current UB DARS report directly to the Department of Computer Science and Engineering during the semester after three of the six required courses are completed.

SAMPLE MINOR PROGRAMS
Software track: CSE 115, CSE 116, CSE 191, CSE 250, CSE 305, CSE 442
Hardware track: CSE 115, CSE 116, CSE 191, CSE 241, CSE 379, CSE 380

Course Descriptions

CSE 101 Computers: A General Introduction

Credits:  4
Semester: F Sp Su
Prerequisites:  Basic knowledge of arithmetic. No experience with computers needed.
Corequisites:  None
Type:  LEC/LAB

View Schedule

Introduces computers, programming, and applications software. Areas of study include computers and their societal impact; history; hardware; problem solving; programming; buying computers and software; and application packages, such as word processing, spreadsheets, and database systems. Admitted computer science and computer engineering majors should not enroll in this course.

CSE 111 Great Ideas in Computer Science

Credits:  4
Semester: F Sp
Prerequisites:  None
Corequisites:  None
Type:  LEC/LAB

View Schedule

Designed to satisfy the mathematics core requirements. Students study algorithmic problem-solving techniques and gain an appreciation for some of the most interesting and significant results of computer science, as well as its intellectual and social significance. The course has both a mathematical and a laboratory component. Topics may include algorithm design, introduction to programming, structured programming, software tools, software engineering, text manipulation, numerical computation, transistors, very large-scale integrated circuits, machine architecture, language translation, computability and computational complexity, parallel computation, and artificial intelligence. Admitted computer science and computer engineering majors should not enroll in this course sequence.

CSE 113 Introduction to Computer Programming I

Credits:  4
Semester: F Sp Su
Prerequisites:  None
Corequisites:  None
Type:  LEC/REC

View Schedule

Introduction to computers and computer programming intended for nonmajors. Currently required for some School of Management majors and appropriate for others seeking a practical introduction to computer programming. Topics include the use of data types and variables, programming control constructs supported by modern languages, input/output, basic concepts of object-oriented programming (such as classes, objects, encapsulation, information hiding, and code reuse), as well as graphical user interfaces. No previous computer experience assumed. Not suitable for intended computer science or computer engineering majors except those who have absolutely no experience using a computer. Admitted computer science and computer engineering students should not take this course.

CSE 114 Introduction to Computer Programming II

Credits:  4
Semester: F Sp Su
Prerequisites:  CSE 113
Corequisites:  None
Type:  LEC/REC

View Schedule

Continuation of CSE 113 for nonmajors. Currently required for some School of Management majors and appropriate for others seeking additional programming skills. Emphasizes the use of modern object-oriented programming methodologies, such as class inheritance, polymorphism, and exceptions. Neither CSE 113 nor CSE 114 can count towards a CSE degree. Admitted computer science and computer engineering majors should not take this course.

CSE 115 Introduction to Computer Science for Majors I

Credits:  4
Semester: F Sp Su
Prerequisites:  No previous programming experience required
Corequisites:  MTH 141 or equivalent
Type:  LEC/REC

View Schedule

Provides the fundamentals of the field to computer science and computer engineering majors, introducing students to algorithm design and implementation in a modern, high-level programming language. Emphasizes problem solving by abstraction. Topics include object-oriented design using a formal modeling language; fundamental object-oriented principles such as classes, objects, interfaces, inheritance and polymorphism; simple event-driven programming; data types; variables; expressions; basic imperative programming techniques, including assignment, input/output, subprograms, parameters, sequencing, selection and iteration; the use of aggregate data structures, such as arrays or more general collections; simple design patterns.

CSE 116 Introduction to Computer Science for Majors II

Credits:  4
Semester: F Sp Su
Prerequisites:  CSE 115 or permission of instructor
Corequisites:  None
Type:  LEC/REC

View Schedule

Continuation of CSE 115. Heavily emphasizes abstract data types (ADTs) and object-oriented methodology, and expects students not only to understand ADTs but also to design and implement robust ADTs using a modern object-oriented programming language. Further emphasizes object-oriented techniques, which support sound software engineering, such as encapsulation, polymorphism and inheritance as well as the use of more complex design patterns. Essential topics integrated in this framework include the use of recursion; linked data structures, including lists, stacks, queues, binary trees, and other advanced data structures; and algorithms for searching and sorting; exceptions and exception handling, event-driven programming. Introduces the analysis of algorithm complexity (0-notation).

CSE 182 Computers and Society

Credits:  3
Semester:
Prerequisites:  None
Corequisites:  None
Type:  LEC/REC

View Schedule

Considers the impact of computers on people and society. Topics may include: data banks, information systems and privacy, computers in government and law, computer capabilities and limitations, computers and employment, professional responsibility, and values and computers. No prerequsite; although technical concepts are developed, there is no direct use of computers. Offered irregularly.

CSE 191 Discrete Structures

Credits:  4
Semester: F Sp
Prerequisites:  CSE 113 or CSE 115
Corequisites:  None
Type:  LEC/REC

View Schedule

Foundational material for further studies in computer science. Topics include logic sets, logic relations, proofs, functions, mathematical induction, trees, graphs, recurrence relations, and some basic counting theory. CSE 191 is required for computer science and computer engineering majors.

CSE 199 Honors Seminar

Credits:  3
Semester:
Prerequisites:  four years of high school mathematics, knowledge of some programming language
Corequisites:  None
Type:  SEM

View Schedule

The content of this course is variable and therefore it is repeatable for credit. The University Grade Repeat Policy does not apply.

Specifically for students enrolled in the UB Honors Program. Enrollment is limited. Topics reflect the interest and research of the faculty member teaching the course. Offered irregularly.

CSE 202 Programming in Lisp

Credits:  1
Semester:
Prerequisites:  CSE 116
Corequisites:  None
Type:  LAB

View Schedule

Provides practical experience in using the Common Lisp programming language. Topics include the object-type hierarchy, including numbers, characters, strings, symbols, packages, lists, conses, functions, hash tables, and arrays; objects vs. printed representations of objects; functions, macros, and special forms; recursion, mapping, and iteration; input/output; Pure Lisp, Imperative Lisp, and CLOS; manipulating lists and trees; pattern matching on symbol structures; use of a modern symbolic programming environment. Offered irregularly.

CSE 241 Digital Systems

Credits:  4
Semester: F Sp
Prerequisites:  CSE 116
Corequisites:  None
Type:  LEC/REC

View Schedule

A course in digital principles which includes an introduction to machine dependent programming. Topics covered include: fundamentals of digital logic, computer arithmetic & Boolean algebra, minimization techniques, basic components of digital circuits such as logic gates and flip-flops, information representation, design of combinational and sequential circuits, memory devices and programmable logic devices, CPU organization, arithmetic logic unit and control unit design, assembly language programming.

CSE 250 Data Structures

Credits:  4
Semester: F Sp
Prerequisites:  CSE 116, CSE 191
Corequisites:  None
Type:  LEC/REC

View Schedule

Provides a rigorous analysis of the design, implementation, and properties of advanced data structures. Topics include order notation and time-space analysis and tradeoffs in a list, tree and graph algorithms, and hashing. Surveys library implementations of basic data structures in a high-level language. Advanced data structure implementations are studied in detail. Illustrates the importance of choosing appropriate data structures when solving a problem by programming projects in a high-level language different from the language of CSE 115 and CSE 116; also covers instruction in this language.

CSE 305 Introduction to Programming Languages

Credits:  4
Semester: F Sp
Prerequisites:  CSE 250
Corequisites:  None
Type:  LEC/REC

View Schedule

Examines the various components of programming languages so students will understand the choices that have been made by programming language designers, and how those choices affect how procedures may be expressed and how data are conceptualized. Topics generally include the nature of variables, types, expressions, control structures, subprograms, concurrency, and exceptions; syntax and semantics. Discusses different programming paradigms, such as imperative, functional, logic, procedural and object-oriented.

CSE 321 Real -Time and Embedded Operating Systems

Credits:  4 \ 0
Semester: F
Prerequisites:  CSE 341 or permission of instructor
Corequisites:  None
Type:  LEC/REC

View Schedule

Addresses some of the fundamental challenges in the design, implementation, and validation of these real-time and embedded systems. Topics include resource management, concurrency, secure coding practices, memory management, timeline design and analysis using metrics and schedulability tests, hardware interfacing, device driver programming, memory maps and boot kernels, firmware and ROM-resident system code, communications and networking, and debugging live systems. These concepts will be reinforced through C programming assignments using the RTLinux operating system.

CSE 331 Introduction to Algorithm Analysis and Design

Credits:  4 \ 0
Semester: F
Prerequisites:  CSE 250, MTH 142
Corequisites:  None
Type:  LEC/REC

View Schedule

Introduces methods for algorithm design, paradigms such as divide and conquer, greedy, and dynamic programming, and techniques for algorithm analysis, such as asymptotic notations and estimates, as well as time/space tradeoffs. Topics include sorting, searching, scheduling, string matching, graph algorithms, computational geometry, and more.

CSE 337 Introduction to Scientific Computing

Credits:  4
Semester:
Prerequisites:  MTH 141
Corequisites:  None
Type:  LEC/LAB

View Schedule

Introduces the fundamental numerical techniques used in high-performance scientific computing for students in all scientific disciplines. These methods include sorting, numerical integration, root finding for nonlinear systems, elementary linear algebra, and basic ordinary differential equations. Emphasizes an experimental approach to scientific computing. Students learn the basics of UNIX, write and debug programs in FORTRAN, and use computational and visualization tools in Matlab. Offered irregularly. Cross-listed with MTH 337.

CSE 341 Computer Organization

Credits:  4
Semester: F Sp
Prerequisites:  CSE 241 or EE 378
Corequisites:  None
Type:  LEC/REC

View Schedule

Basic hardware and software issues of computer organization. Topics include computer abstractions and technology, performance evaluation, instruction set architecture, arithmetic logic unit design, advanced computer arithmetic, datapath and control unit design, pipelining, memory hierarchy, input-output.

CSE 379 Introduction to Microprocessors and Microcomputers

Credits:  3
Semester: Sp
Prerequisites:  CSE 241 or EE 378
Corequisites:  CSE 380
Type:  LEC

View Schedule

Microprocessor architecture, machine language programming, microprocessor assemblers, assembly language programming, software development, memory and I/O interface, interrupts microprocessor system design and microprocessor applications.

CSE 380 Introduction to Microprocessors Lab

Credits:  3
Semester: Sp
Prerequisites:   CSE 241 or EE 378
Corequisites:  CSE 379
Type:  LEC/LAB/REC

View Schedule

A microprocessor system and its application in embedded devices. This course is the laboratory component to CSE 379. Topics include: microprocessor architecture; memory organization; assembly language programming; microprocessor assemblers; software development; use of microprocessor boards; memory and I/O interfaces; programming peripherals; interrupt system programming; microprocessor system design and applications.

CSE 396 Introduction to the Theory of Computation

Credits:  4
Semester: F Sp
Prerequisites:  CSE 250
Corequisites:  None
Type:  LEC/REC

View Schedule

Covers machine models and formal specifications of the classes of computational problems they can solve. The central concepts are the Turing machine and the classes of decidable and computably enumerable languages. The Halting Problem and other natural problems are shown to be undecidable by Turing machines, implying that they are undecidable by high-level programming languages or any other known computational model. Finite automata, which are Turing machines without external memory, are shown to correspond to the class of regular languages. The course also covers regular expressions, time and space complexity of Turing machines, reducibility between problems, and NP-completeness.

CSE 410 Special Topics

Credits:  4
Semester:
Prerequisites:  permission of instructor
Corequisites:  None
Type:  LEC

View Schedule

The content of this course is variable and therefore it is repeatable for credit. The University Grade Repeat Policy does not apply.

Contents, format and required background vary from offering to offering. Intended for rapid introduction of timely material in computer science and engineering, which will not be repeated under this course number. Offered occasionally.

CSE 411 Introduction to Computer Systems Administration

Credits:  4
Semester: F
Prerequisites:  CSE 241 or CSE 379
Corequisites:  None
Type:  LEC/REC

View Schedule

Teaches how to administer a network of computer workstations using an Operating System such as UNIX. Topics include managing user accounts, system backups, installing and configuring the operating system, setting up a computer network, shell programming, and computer security.

CSE 421 Introduction to Operating Systems

Credits:  4
Semester: F Sp
Prerequisites:  CSE 241, CSE 305
Corequisites:  None
Type:  LEC/REC

View Schedule

Covers the principles and techniques in the design of operating systems. Describes concepts of operating systems in terms of functions, structure, and implementation, particularly emphasizing multiprogramming. Topics include process coordination, deadlocks, memory management, device management, file systems, scheduling policies for CPU, and network and distributed operating systems. Illustrates concepts with examples from existing operating systems.

CSE 422 Operating Systems Internals

Credits:  4
Semester: Sp
Prerequisites:  CSE 421 or permission of instructor
Corequisites:  None
Type:  LEC/REC

View Schedule

Uses an operating system (such as UNIX) as an example to teach the internal workings of operating systems. The material presented is more practical than the other operating systems related classes. The laboratory component of this course provides programming projects involving modifications to an operating system kernel (such as UNIX) on computers dedicated to use for this course. Topics covered include building the operating system kernel, the system call interface, process management, kernel services provided for processes, the I/O system, the internal workings of the file system, device drivers, and the kernel support of Interprocess Communications.

CSE 431 Algorithms Analysis and Design

Credits:  4
Semester: F Sp
Prerequisites:  CSE 250
Corequisites:  None
Type:  LEC/REC

View Schedule

Introduces basic elements of the design and analysis of algorithms. Topics include asymptotic notations and analysis, divide and conquer, greedy algorithms, dynamic programming, fundamental graph algorithms, NP-completeness, approximation algorithms, and network flows. For each topic, beside in-depth coverage, we discuss one or more representative problems and their algorithms. In addition to the design and analysis of algorithms, students are expected to gain substantial discrete mathematics problem solving skills essential for computer scientists and engineers.

CSE 437 Introduction to Numerical Analysis I

Credits:  4
Semester: F
Prerequisites:  CSE 113 or CSE 115; MTH 241, MTH 306, MTH 309 or permission of instructor
Corequisites:  None
Type:  LEC/REC

View Schedule

First part of a 2-semester sequence, which explores the design and implementation of numerical methods to solve the most common types of problems arising in science and engineering. Most such problems cannot be solved in terms of a closed analytical formula, but many can be handled with numerical methods learned in this course. Topics for the two semesters include: how a computer does arithmetic, solving systems of simultaneous linear or nonlinear equations, finding eigenvalues and eigenvectors of (large) matrices, minimizing a function of many variables, fitting smooth functions to data points (interpolation and regression), computing integrals, solving ordinary differential equations (initial and boundary value problems), and solving partial differential equations of elliptic, parabolic, and hyperbolic types. We study how and why numerical methods work, and also their errors and limitations. Practical experience is gained through course projects that entail writing computer programs. Cross-listed with MTH 437.

CSE 438 Introduction to Numerical Analysis II

Credits:  4
Semester: Sp
Prerequisites:  CSE 437 or MTH 437
Corequisites:  None
Type:  LEC/REC

View Schedule

Second part of the 2-semester sequence described under CSE 437. Cross-listed with MTH 438.

CSE 442 Software Engineering

Credits:  4
Semester: F Sp
Prerequisites:  CSE 305
Corequisites:  None
Type:  LEC/REC

View Schedule

Examines in detail the software development process. Topics include software life-cycle models, architectural and design approaches, various techniques for systematic software testing, coding and documentation strategies, project management, customer relations, and the social, ethical, and legal aspects of computing. Students in this course participate in a real-world project from conception to implementation.

CSE 443 Introduction to Language Processors

Credits:  4
Semester:
Prerequisites:  CSE 305, CSE 396
Corequisites:  None
Type:  LEC/REC

View Schedule

Considers problems encountered in the design and implementation of a translator for high-level programming languages: lexical analysis, context-free grammars, parsing, storage allocation, code generation and optimization, and error recovery. Uses compiler construction tools for the programming projects. Offered occasionally.

CSE 451 Program Development

Credits:  4
Semester:
Prerequisites:  CSE 305
Corequisites:  None
Type:  LEC/REC

View Schedule

A course in theoretical software engineering, covering the practical development of correct programs based on a mathematical notion of program correctness. Topics include: prepositional and first-order logic; the specification of programs using Hoare triple and Dijkstra�s weakest preconditions; the definition of a small imperative language; assignment, sequencing, a conditional statement, and a loop; and programming as a goal-oriented developmental activity, based on the formal definition of a small language. Offered irregularly.

CSE 452 VLSI Testing

Credits:  4
Semester: Sp
Prerequisites:  CSE 497 or permission of instructor
Corequisites:  None
Type:  LEC

View Schedule

Includes topics: VLSI design fundamentals; various aspects of testing; fault model; design for testability; built-in self-test; simulation at various levels; software tools and equipment, built-in self-testing PLAs; built-in self-testing RAMs. The major design project is on testable design of VLSI. Expects students to use the testable design concepts learned in the class and incorporate them into the circuits during the chip design. The project is an open-ended problem, and students are free to exercise a combination of ideas.

CSE 453 Hardware/Software Integrated Systems Design

Credits:  4
Semester: Sp
Prerequisites:  CSE 380 and CSE 442, or permission of instructor
Corequisites:  None
Type:  LEC/REC

View Schedule

Software designs produced in the prerequisite CSE 442 Software Engineering course are carried here to a complete hardware realization. Bringing skills learned from previous hardware and software-oriented courses, students form workgroups and are given tools, parts, goals, and constraints, all of which define the integrated design setting. These workgroups propose and defend their realization concepts at key intervals during the project buildout. Projects are tested, and a report analyzing the level of satisfaction of design and performance specifications submitted. Each group prepares a �rollout� presentation, which includes a demonstration of their project in operation. This is a required course for CEN majors.

CSE 462 Database Concepts

Credits:  4
Semester:
Prerequisites:  CSE 305
Corequisites:  None
Type:  LEC/REC

View Schedule

Discusses basic concepts of modern database management systems. Topics include: data models, query languages, integrity constraints, indexing, query optimization, and transaction management. Students implement an example database application. Offered irregularly.

CSE 463 Introduction to Knowledge Representation and Reasoning

Credits:  4
Semester: Sp
Prerequisites:  CSE 305 or permission of instructor
Corequisites:  None
Type:  LEC/REC

View Schedule

Introduces the field of knowledge representation and reasoning, the branch of artificial intelligence concerned with the techniques for representing and reasoning about the information to be used by an AI program. Topics include some of the following, as well as others (e.g., non-representational AI, connectionist representations), as time permits: the knowledge-representation hypothesis; propositional and first-order logic; non-classical logics (e.g., modal logics); non-monotonic, defeasible, and default logics; logics of knowledge and belief; truth maintenance and belief revision; semantic networks; frames; description logics (e.g., the KL-ONE family); and commonsense.

CSE 467 Computational Linguistics

Credits:  4
Semester: F
Prerequisites:  CSE 305 or permission of instructor
Corequisites:  None
Type:  LEC/REC

View Schedule

Introduces computational models for understanding natural languages. Covers syntactic and semantic parsing, generation, and knowledge representation techniques. Cross-listed with LIN 467.

CSE 473 Introduction to Computer Vision and Image Processing

Credits:  4
Semester: F
Prerequisites:  CSE 305 or permission of instructor
Corequisites:  None
Type:  LEC/REC

View Schedule

Introduces those areas of artificial intelligence that relate to fundamental issues and techniques of computer vision and image processing. Emphasizes physical, mathematical, and image-processing aspects of vision. Topics include image formation, edge detection, segmentation, convolution, image-enhancement techniques, extraction of features (such as color, texture, and shape), object detection, 3-D vision, and computer system architectures and applications.

CSE 474 Introduction to Machine Learning

Credits:  4
Semester: F
Prerequisites:  EAS 305 or MTH 309 or permission of instructor
Corequisites:  None
Type:  LEC/REC

View Schedule

Involves teaching computer programs to improve their performance through guided training and unguided experience. Takes both symbolic and numerical approaches. Topics include concept learning, decision trees, neural nets, latent variable models, probabilistic inference, time series models, Bayesian learning, sampling methods, computational learning theory, support vector machines, and reinforcement learning.

CSE 475 Modern Computer Systems

Credits:  4
Semester:
Prerequisites:  CSE 341 or CSE 380
Corequisites:  None
Type:  LEC/LAB/REC

View Schedule

Computer system architecture, operating system structures and hardware interfacing. C and assembly language programming on SPARC RISC processors. Standard calling conventions and stack frame usage. Operating system services. Directly programmed interfaces, interrupt serviced interfaces and data acquisition systems. Custom interface design for a standard bus. Offered irregularly.

CSE 484 Philospohy of Computer Science

Credits:  4
Semester:
Prerequisites:  Junior or senior standing, or permission of instructor
Corequisites:  None
Type:  LEC/REC

View Schedule

Introduces philosophical issues in computer science. Examines the nature of computer science (e.g., whether it is a science or a branch of engineering, whether it is the study of physical computers or abstract computing); the nature of computation, algorithms, and software, and their implementation in computer programs; the nature of computer programs (e.g., whether they are theories, models, or simulations; whether they can or should be patented or copyrighted; whether they can be verified). Also briefly explores the philosophy of artificial intelligence and issues in computer ethics. Offered irregularly. Cross listed with PHI 484.

CSE 486 Distributed Systems

Credits:  4
Semester: F
Prerequisites:  CSE 305
Corequisites:  None
Type:  LEC/REC

View Schedule

Addresses some of the fundamental challenges in the design, implementation and deployment of large-scale distributed systems. Concepts covered include concurrency, synchronization, connection establishment, event handling, inter process communication, storage management, and service registration, discovery, and lookup. Also covers issues related to distributed objects such as life cycle management, mobility, security, naming, location, evolution, and autonomy. Analyses and implements possible solutions using objects, processes, services, components and frameworks. Offered irregularly.

CSE 487 Information Structures

Credits:  4
Semester: Sp
Prerequisites:  CSE 305 programming languages or equivalent, object-oriented design and programming in Java
Corequisites:  None
Type:  LEC

View Schedule

Overview of information technology in large-scale commercial and scientific systems, emphasizing state of the art computing in realizing various services and the frameworks supporting these services. Concepts covered include: enterprise modeling, process modeling, process automation and streamlining, workflow management, messaging, persistent message queues, transaction monitoring, document exchange, application servers, service definition (web services, web services definition language: WSDL), connection and resource reservation protocols (TCP, grid computing), integration technologies and architectures (Java 2 Enterprise Edition: J2EE, extensible Markup Language: XML, and Globus toolkit).

CSE 489 Modern Networking Concepts

Credits:  4
Semester:
Prerequisites:  C and C++ language programming experience, and either EAS 305 or MTH 411
Corequisites:  None
Type:  LEC/REC

View Schedule

Introduces basic elements of modern computer and telecommunications networks. Discusses a hybrid five-layer reference model resembling the popular TCP/IP model. In each layer, the course introduces the state-of-the-art hardware and software technologies. These include, for example, fiber-optic and wireless/mobile/cellular communications at the physical layer, to network security in the application layer. Offered once a year.

CSE 490 Computer Architecture

Credits:  4
Semester: F
Prerequisites:  CSE 379
Corequisites:  None
Type:  LEC/REC

View Schedule

Examines system architecture with 32- and 64-bit microprocessors. Topics include the design of high-performance computer systems, such as workstations and multiprocessor systems using recent advanced microprocessor. Considers the internal architecture of recent microprocessors, followed by vector processing, memory hierarchy design, and communication subsystems for I/O and interprocessor communication.

CSE 493 Introduction to VLSI Electronics

Credits:  4
Semester: F
Prerequisites:  EE 310 and CSE 379
Corequisites:  None
Type:  LEC/LAB

View Schedule

Introduces VLSI electronics. VLSI is the integration of a large number of logic gates on a single semiconductor chip. Applications of VLSI include memory, microprofessors, and signal processing. Topics include digital system design;VLSI systems;CMOS circuits; use of CAD tools in the layout of full-custom and semi-custom integrated circuits. Project required. Emphasizes designing a working chip, understanding various steps in design. Typical projects: ALU, games, controllers.

CSE 494 Senior Capstone/Seminar

Credits:  3
Semester:
Prerequisites:  Completion of year 1-3 major requirements
Corequisites:  None
Type:  SEM

View Schedule

Course for senior-level majors intended to provide a learning experience that integrates knowledge from lower-level courses. Topics may vary.

CSE 495 Supervised Teaching

Credits:  1 - 4
Semester:
Prerequisites:  Junior status, 3.0 QPA, A- or better in course teaching, permission of instructr
Corequisites:  None
Type:  TUT

View Schedule

The content of this course is variable and therefore it is repeatable for credit. The University Grade Repeat Policy does not apply.

Students participating in this course serve as undergraduate teaching assistants. Responsibilities include leading lab and recitation sections, and holding study sessions.

CSE 496 Internship

Credits:  1 - 5
Semester: F Sp
Prerequisites:  Accepted CSE major and personal interview with an advisor in computer science and engineering
Corequisites:  None
Type:  TUT

View Schedule

Field experience working on a computer science project in a real-world setting under the joint direction of a supervisor from industry and a faculty advisor from the Department of Computer Science and Engineering. Projects selected should integrate the material learned in academic courses. Upon completing the internship the student is expected to have fulfilled an internship contract. Only S/U grades are given (therefore, internships may not be used to satisfy requirements for the BA or BS.) No more than 5 credit hours of CSE 498 may be taken. Offered every semester.

CSE 497 Departmental Honors Thesis or Project

Credits:  3
Semester:
Prerequisites:  Acceptance into departmental honors program and permission of instructor
Corequisites:  None
Type:  TUT

View Schedule

Accepted seniors pursue a specialized independent study leading to an honors thesis or project.

CSE 498 Undergraduate Research and Creative Activity

Credits:  1 - 4
Semester:
Prerequisites:  Permission of instructor
Corequisites:  None
Type:  TUT

View Schedule

The content of this course is variable and therefore it is repeatable for credit. The University Grade Repeat Policy does not apply.

Students collaborate with faculty research mentors on an ongoing project in a faculty member's laboratory or conduct independent research under the guidance of a faculty member. This experience provides students with an inquiry based learning opportunity and engages them as active learners in a research setting.

CSE 499 Independent Study

Credits:  1 - 4
Semester: F Sp
Prerequisites:  permission of instructor, preferably during the previous semester
Corequisites:  None
Type:  TUT

View Schedule

The content of this course is variable and therefore it is repeatable for credit. The University Grade Repeat Policy does not apply.

Independent study in an area of computer science in which the student is particularly interested. (May not be used to satisfy the requirements for the B.A. or B.S.) Students seeking departmental distinction (honors) must complete at least 6 credit hours of CSE 499.

Updated: Aug 8, 2006 10:09:00 AM