Computer Science and Engineering

Professors. Daniel P. Lopresti, Ph.D. (Princeton), Chair; Edwin J. Kay, Ph.D. (Lehigh), Associate chair; Henry Baird, Ph.D. (Princeton); Donald J. Hillman, Ph.D. (Cambridge, England); Henry F. Korth, Ph.D. (Princeton), Weiseman Professor of Computer Science and Engineering; Roger N. Nagel, Ph.D. (U. of Maryland), Harvey E. Wagner professor of manufacturing systems engineering.

Associate Professors Liang Cheng, Ph.D. (Rutgers); Mooi Choo Chuah, Ph.D. (UC San Diego); Brian D. Davison, Ph.D. (Rutgers); Jeff Heflin, Ph.D. (U. of Maryland); Hector Munoz-Avila, Ph.D. (U. of Kaiserslautern, Germany): John R. Spletzer, Ph.D. (U. of Pennsylvania).

Assistant Professors. Brian Chen, Ph.D. (Rice); Xiaolei Huang, Ph.D. (Rutgers); Michael Spear, Ph.D. (U. of Rochester); Gang Tan, Ph.D. (Princeton)

Professor of Practice. Sharon Kalafut M.S. (Pennsylvania State Univ.)

Adjunct Professors. Brad Askins M.S (University of Southern California); James Femister, Ph.D. (Lehigh)

The department of computer science and engineering (CSE) offers undergraduate and graduate programs of study in computer science, computer science and business, and computer engineering, along with research opportunities in these fields. Computer science is the study of computer algorithms, software systems, and the effective use of computers to solve real-world problems and to develop new applications. Computer engineering is the study of how to develop new computer systems and how to integrate computers with electronic devices. Lehigh’s majors prepare students for graduate school or for any of the different careers in computer science, computer engineering or computer systems analysis. Computer science and computer engineering and their related careers represent, in the US workplace, the largest field of engineering larger than all others, including electrical engineering, combined. More discussion on the career potential, as well as the most up to date course offerings can be found on our departmental web site, www.cse.lehigh.edu.

Lehigh University offers a bachelor of science degree in computer science from the P. C. Rossin College of Engineering and Applied Science; the bachelor of science degree in computer science, and the bachelor of arts degree with a major in computer science, from the College of Arts and Sciences; and a bachelor of science in Computer Science and Business, jointly supported by the P.C. Rossin College of Engineering and Applied Science and the College of Business and Economics. A minor in computer science is available except to students majoring in computer engineering or electrical engineering. Graduate study in the department leads to the degrees of master of science and doctor of philosophy (Ph.D.) in computer science. In conjunction with the department of Electrical and Computer Engineering (ECE), a bachelor of science degree in computer engineering and the master of science and Ph.D. degrees in computer engineering are also offered in the P.C. Rossin College of Engineering and Applied Science. In conjunction with the College of Business and Economics, the CSE department also takes part in the masters of business and engineering (MB&E) program and in the integrated business and engineering major. Except for the Bachelor of Arts degree, each of the above programs is accredited by the Computer Accreditation Commission of ABET, Inc. 111 Market Place, Suite 1050, Baltimore, MD 21202-4012 and telephone (410) 347-7700.

The undergraduate programs emphasize the fundamental aspects of their respective areas, with extensive hands-on experiences for the students. Electives permit students to tailor their programs according to their interests and goals, whether they be in preparation for graduate study or entry into industry. The department highly recommends that students give focus to their electives by following one of the tracks listed in the department website at www.cse.lehigh.edu/TRACKS. Students have the opportunity to synthesize and apply their knowledge in a senior design project. Students are encouraged to become involved in the many research projects within the department, and may use independent study courses and their senior project as a way to participate while receiving course credit.

The graduate programs enable students to deepen their professional knowledge, understanding, and capability within their subspecialties. Each graduate student develops a program of study in consultation with his or her graduate advisor. Key thrust areas in the department include:

Computer Systems Engineering: computer architecture, sensor networks, robotics, mobile and wearable computing, and networking.

Software Systems Engineering: software architectures, parallel and distributed computing, object-oriented soft ware, middleware, Web-based systems and networked software systems.

Information Systems Engineering: database, data mining, bioinformatics, computer graphics, optimization, multimedia systems, expert systems, artificial intelligence, and computer vision.

Both graduate and undergraduate research are encouraged. The department maintains a number of computer laboratories in support of computer science and computer engineering and the ECE department maintains additional laboratories supporting the hardware aspects of computer engineering. The department has research laboratories in robotics, networking, image processing, artificial intelligence, security, and web mining. These laboratories and their associated research activities are described more completely in the departmental web site (www.cse.lehigh.edu). While these laboratories are research oriented, they are also used for undergraduate projects.

Computer laboratory usage is an essential part of the student’s education. The primary department resources include a network of more than 60 workstations, file servers, and compute servers running the Unix operating system. These systems provide an array of software tools for our students and researchers including programming languages (C, C++, Java, Perl, Python, Ruby, Matlab, etc.), software development tools, software and hardware simulators, and computer-aided design packages. One of our teaching labs contains workstations specifically designed for flexibility in running different operating systems so that students can become system administrators, network defenders, or designers of high-performance code utilizing graphical processing units (GPUs) within a controlled environment.

The department’s computers are connected via gigabit Ethernet to the university’s backbone network. The university is connected through multiple high-capacity connections to the Internet as well as a connection to Internet2. Neither the department nor the university requires a student to own a personal computer. In addition to the departmental resources, the university provides campus-wide wireless network access, public sites containing hundreds of PCs and Macintoshes, multiple large-capacity compute servers, and most classrooms are equipped with a PC and a video projection system.

A detailed description of the curricular programs follows with a listing of the required courses and with a listing of the departmental course offerings. The departmental courses carry the prefixes CSE for computer science and engineering and ECE for electrical and computer engineering. Students should consult both listings for courses appropriate to their career goals.

Undergraduate Programs

Mission Statement for the Computer Science and Engineering Programs

The mission of the computer science and computer engineering programs is to prepare computer scientists and computer engineers to meet the challenges of the future; to promote a sense of scholarship, leadership and service among our graduates; to instill in the students the desire to create, develop, and disseminate new knowledge; and to provide international leadership to the computer science and engineering professions.

Program Educational Objectives in Computer Science

Graduates of the Bachelor of Science in Computer Science Programs will:

Bachelor of Science in Computer Engineering

See catalog entry for Computer Engineering.

Bachelor of Science in Computer Science and Business

See catalog entry for Computer Science and Business.

Bachelor of Science in Computer Science

Bachelor of Science in Computer Science degree programs are available to students through either the College of Arts and Sciences or the P. C. Rossin College of Engineering and Applied Science. Both programs are accredited by the Computing Accreditation Commission of ABET, 111 Market Place, Suite 1050, Baltimore, MD 21202-4012 – telephone (410) 347-7700. The two programs are identical in the fundamental requirements in mathematics and computer science, and the programs are appropriate for entry into management or industrial positions. They are also appropriate for continued graduate study, though students considering graduate study are strongly encouraged to consider taking part in a research project during their junior year. The two BS programs differ in their non-computer science content in that the students must fulfill the distribution requirements of the respective college.

The required courses for the degrees contain the fundamentals of discrete mathematics, structured programming, algorithms, computer architecture, compiler design, operating systems, and programming languages. A strong foundation in mathematics is required. Because many courses are frequently offered, there are many sequences in which courses may be taken to satisfy the requirements. Below are the requirements for the B.S. degrees. See www.cse.lehigh.edu/COURSES for links to sample sequences and for a list of all CSE courses, their prerequisites, and when they are offered.

P. C. Rossin College of Engineering and Applied Science:

Bachelor of Science in Computer Science

Total required credit hours: 128

Required Computer Science courses (34 credit hours):

CSE 2

Fundamentals of Programming (2)

CSE 17

Programming and Data Structures (3)

CSE 109

Systems Programming (4)

CSE 130

Technical Presentation (1)

CSE 202

Computer Organization and Architecture (3)

CSE 216

Software Engineering (3)

CSE 261

Discrete Structures (3)

CSE 262

Programming Languages (3)

CSE 303

Operating System Design (3)

CSE 318

Introduction to the Theory of Computation (3)

CSE 340

Design and Analysis of Algorithms (3)

CSE 379

Senior Project (3)

Required Math and Science courses (36 credit hours):

CHM 30

Introductory Chemical Principles and Laboratory (4)

ENGR 97

Applied Engineering Computer Methods (2)

ENGR 98

Introduction to Engineering Practice (2)

MATH 21

Calculus I (4)

MATH 22

Calculus II (4)

MATH 23

Calculus III (4)

MATH 205

Linear Methods (3)

MATH 231

Probability & Statistics (3)

PHY 11, 12

Introductory Physics I and Laboratory I (5)

PHY 21, 22

Introductory Physics II and Laboratory II (5)

Required approved electives (18 credit hours):

Twelve credit hours of CSE courses, not including CSE 42, and an additional 6 credit hours in areas of science and technology, chosen by the student with the approval of the student’s advisor. The department highly recommends that students give focus to their approved electives by following one of the tracks listed in the department website at www.cse.lehigh.edu/TRACKS

Humanities and Social Science (HSS) requirements (30 credit hours):

ENGL 1 Composition and Literature (3)

ENGL 2 Composition and Literature II (3)

ECO 1 Principles of Economics (4)

CSE 252 Computers, Internet and Society (3)

An additional 17 credit hours of HSS courses that satisfy the Engineering College “breadth and depth” requirements.

Free Electives (10 credit hours)

College of Arts and Sciences:

Bachelor of Science in Computer Science

See the distribution requirements of the College of Arts and Sciences, section III.

Total required credit hours: 127

Required Computer Science courses (36 credit hours):

CSE 1

Breadth of Computing (2)

CSE 2

Fundamentals of Programming (2)

CSE 17

Programming and Data Structures (3)

CSE 109

Systems Programming (4)

CSE 130

Technical Presentation (1)

CSE 202

Computer Organization and Architecture (3)

CSE 216

Software Engineering (3)

CSE 261

Discrete Structures (3)

CSE 262

Programming Languages (3)

CSE 303

Operating System Design (3)

CSE 318

Introduction to the Theory of Computation (3)

CSE 340

Design and Analysis of Algorithms (3)

CSE 379

Senior Project (3)

Required Math and Science courses (30 credit hours):

MATH 21

Calculus I (4)

MATH 22

Calculus II (4)

MATH 23

Calculus III (4)

MATH 205

Linear Methods (3)

MATH 231

Probability & Statistics (3)

Twelve credit hours of natural science, such that one course has an attached laboratory and such that two courses are in a laboratory science with the first course a prerequisite to the second course.

Required approved electives (18 credit hours):

Twelve credit hours of CSE courses, not including CSE 42, and an additional 6 credit hours in areas of science and technology, chosen by the student with the approval of the student’s advisor. The department highly recommends that students give focus to their approved electives by following one of the tracks listed in the department website at www.cse.lehigh.edu/TRACKS

Humanities and Social Science (HSS) requirements (30 credit hours):

ENGL 1 Composition and Literature (3)

ENGL 2 Composition and Literature II (3)

CSE 252 Computers, Internet and Society (3)

An additional 21 credit hours of HSS courses that satisfy the Arts and Sciences College distribution requirements.

Free electives (12 credit hours)

College of Arts and Sciences:

Bachelor of Arts in Computer Science

This program of 120 credit hours is intended for students who desire a strong liberal arts program with a concentration in computer science. The program contains the fundamentals of computer science, including discrete mathematics, structured programming, data structures, programming languages, computer organization, compiler design, and operating systems.

See the distribution requirements of the College of Arts and Sciences, section III. The requirements are listed below. For a suggested sequence of courses to satisfy this major and for a list of all CSE courses, their prerequisites, and when they are offered see www.cse.lehigh.edu/COURSES

Total required credit hours: 120

Required Computer Science courses (35 credit hours):

CSE 1

Breadth of Computing (2)

CSE 2

Fundamentals of Programming (2)

CSE 17

Programming and Data Structures (3)

CSE 109

Systems Programming (4)

CSE 202

Computer Organization and Architecture (3)

CSE 216

Software Engineering (3)

CSE 261

Discrete Structures (3) OR MATH 243 Algebra (3)

CSE 262

Programming Languages (3)

CSE 303

Operating System Design (3)

CSE 318

Introduction to the Theory of Computation (3)

CSE 340

Design and Analysis of Algorithms (3)

Required CSE electives (3 credits) any CSE course except CSE 42, CSE 130, or CSE 252

Required Math and Science courses (11 credit hours):

MATH 21

Calculus I (4)

MATH 22

Calculus II (4)

MATH 43

Survey of Linear Algebra (3)

Minor in Computer Science

The minor in computer science provides a basic familiarity with software development and programming, computer organization, and essential elements of computer science. This minor is not available to students majoring in Computer Engineering. The minor requires 17 credit hours, consisting of the following:

CSE 1

Breadth of Computing (2) OR ENGR 97 Applied Engineering Computer Methods (2)

CSE 2

Fundamentals of Programming (2)

CSE 17

Programming and Data Structures (3)

Plus at least 10 credits of CSE courses EXCEPT CSE 42, Principles of Computer Game Design, CSE 130, Technical Presentation, and CSE 252, Computers, the Internet, and Society.

P. C. Rossin College of Engineering and Applied Science

Graduate Programs

Note: For information about graduate degrees in Computer Engineering, see the catalog entry for Computer Engineering.

Graduate programs of study provide a balance between formal classroom instruction and research and are tailored to the individual student’s professional goals. The programs appeal to individuals with backgrounds in computer or information science, in computer engineering, in electrical engineering, in mathematics, or in the physical sciences. Research is an essential part of the graduate program. The research topics were listed earlier in the departmental description.

The Master of Science degree requires the completion of 30 credit hours of work and may include a three credit hour thesis. A program of study must be submitted in compliance with the graduate school regulations. An oral presentation of the thesis is required.

The Master of Engineering degree requires the completion of 30 credit hours of work, which includes design-oriented courses and an engineering project. A program of study must be submitted in compliance with the college rules. An oral presentation of the project is required.

The Ph.D. degree in computer science requires the completion of 42 credit hours of work (including the dissertation) beyond the master’s degree (48 hours if the master’s degree is not from Lehigh), the passing of departmental qualifying requirements appropriate to each degree within one year after entrance into the degree program, the admission into candidacy, the passing of a general examination in the candidate’s area of specialization, and the writing and defense of a dissertation. Competence in a foreign language is not required.

The CSE department has a core curriculum requirement for graduate students in each of the degree programs. The purpose of this requirement is to guarantee that all students pursuing graduate studies in the department acquire an appropriate breadth of knowledge of their discipline.

Computer Science: PhD students in the CS program must satisfy a "Graduate Breadth" requirement which involves taking, in addition to the four mandated first-year courses, another four regular graduate-level courses in Computer Science and Engineering or a closely related subject. Courses appropriate to the student's educational objectives should be selected in consultation with the student's advisor. The plan must be approved by the advisor, the Director of Graduate Studies for CSE, and the Chair of the CSE Department. To satisfy the requirement, courses must be at the 400-level and may not be research, independent study, experimental, or special topics courses (for example, courses numbered CSE 450 or CSE 49X will not satisfy the requirement).

This new requirement applies to CS students entering the Ph.D. program in Fall 2010 or later (i.e., those who fall under the new rules regarding the first-year curriculum).For details on these requirements, see the department’s web site www.cse.lehigh.edu.

Courses from other universities or undergraduate studies may be used to satisfy these requirements, by petition, at the discretion of the department faculty. Additional graduate program information may be obtained from the department’s graduate coordinator.

Departmental Courses

Departmental courses are listed under the prefix CSE. Students should also consult the ECE department listing because electives can be chosen from either department.

Computer Science (CSE)

For Undergraduate Students

CSE 1. Breadth of Computing (2)

Broad overview of computer science, computer systems, and computer applications. Programming in Java. Interactive Web page development. Includes laboratory. Not available to students who have taken CSE 12 or ENGR 1.

CSE 2. Fundamentals of Programming (2)

Problem-solving and object-oriented programming using Java. Includes laboratory. No prior programming experience needed.

CSE 12. Survey of Computer Science (3)

Fundamental concepts of computing and "computational thinking": problem analysis, abstraction, algorithms, digital representation of information, and networks. Applications of computing and communication that have changed the world. Impact of computing on society. Concepts of software development using a scripting language such as Python, Perl, or Ruby. Not available to students who have taken CSE 15

CSE 17. Programming and Data Structures (3) fall and spring

Algorithmic design and implementation in a high level, object oriented language, such as Java. Classes, subclasses, recursion, searching, sorting, linked lists, trees, stacks, queues. Credit will not be given for both CSE 17 and CSE 18. Prerequisite: CSE 15.

CSE 18. Data Structures and Programming (3) fall and spring

Covers the same topics as CSE 17, except that no previous exposure to Java is assumed. Credit will not be given for both CSE 17 and CSE 18. Prerequisite: ENGR 1 or CSE 12.

CSE 42. Principles of Computer Game Design (3)

Modern topics in game design: Finite State Machines, iterative design process, systems and interactivity, designing rules for digital games, emergence in games, games as Schemas of Uncertainty, games as Information Theory Schemas, games as Information Systems, games as Cybernetic Systems. The course does not count as a technical elective for majors in Computer Science, Computer Science and Business, or Computer Engineering. Prerequisites: none.

CSE 109. Systems Software (4) fall and spring

Advanced programming and data structures, including dynamic structures, memory allocation, data organization, symbol tables, hash tables, B-trees, data files. Object-oriented design and implementation of simple assemblers, loaders, interpreters, compilers, and translators. Practical methods for implementing medium-scale programs. Prerequisite: CSE 17 or CSE 18.

CSE 130. Technical Presentation (1)

Oral and written communication of information in computer science. Technical writing; structure, style, and delivery of oral presentations; use of visual aids. Presentation topics chosen from the content of CSE 109. Corequisite CSE 17 or CSE 18.

CSE 190. Special Topics (1-3)

Supervised reading and research. Prerequisite: consent of the department head.

CSE 202. Computer Organization and Architecture (3)

Interaction between low-level computer architectural properties and high-level program behaviors: instruction set design; digital logic and assembly language; processor organization; the memory hierarchy; multicore and GPU architectures; and processor interrupt/exception models. Credit will not be given for both CSE 201 and CSE 202. Prerequisite: CSE 17.

CSE 216. Software Engineering (3)

The software lifecycle; lifecycle models; software planning; testing; specification methods; maintenance. Emphasis on team work and large-scale software systems, including oral presentations and written reports. Prerequisite: CSE 109.

CSE 241. Database Systems and Applications (3)

Design of large databases: Integration of databases and applications using SQL and JDBC; transaction processing; performance tuning; data mining and data warehouses. Not available to students who have credit for CSE 341 or IE 224. Prerequisite: CSE 17, or CSE 18 or consent of Instructor.

CSE 252 (EMC 252) (STS 252). Computers, the Internet, and Society (3)

An interactive exploration of the current and future role of computers, the Internet, and related technologies in changing the standard of living, work environments, society and its ethical values. Privacy, security, depersonalization, responsibility, and professional ethics; the role of computer and Internet technologies in changing education, business modalities, collaboration mechanisms, and everyday life. (SS)

CSE 261. (MATH 261). Discrete Structures (3)

Topics in discrete structures chosen for their applicability to computer science and engineering. Sets, propositions, induction, recursion; combinatorics; binary relations and functions; ordering, lattices and Boolean algebra; graphs and trees; groups and homomorphisms. Various applications. Prerequisite: MATH 21.

CSE 262. Programming Languages (3)

Use, structure and implementation of several programming languages. Prerequisite: CSE 17 or CSE 18.

CSE 265. System and Network Administration (3)

Overview of systems and network administration in a networked UNIX-like environment. System installation, configuration, administration, and maintenance; security principles; ethics; network, host, and user management; standard services such as electronic mail, DNS, and WWW; file systems; backups and disaster recovery planning; troubleshooting and support services; automation, scripting; infrastructure planning. Prerequisite: CSE17 or CSE 18.

CSE 271. Programming in C and the Unix Environment (3)

C language syntax and structure. C programming techniques. Emphasis on structured design for medium to large programs. Unix operating system fundamentals. Unix utilities for program development, text processing, and communications. Prerequisite: CSE 109.

CSE 302. Compiler Design (3) spring

Principles of artificial language description and design. Sentence parsing techniques, including operator precedence, bounded-context, and syntax-directed recognizer schemes. The semantic problem as it relates to interpreters and compilers. Dynamic storage allocation, table grammars, code optimization, compiler-writing languages. Prerequisites: CSE 109 and CSE 318.

CSE 303. Operating System Design (3) fall and spring

Process and thread programming models, management, and scheduling. Resource sharing and deadlocks. Memory management, including virtual memory and page replacement strategies. I/O issues in the operating system. File system implementation. Multiprocessing. Computer security as it impacts the operating system. Prerequisites: ECE 201 or CSE 202 and CSE 109.

CSE 308. Bioinformatics: Issues and Algorithms (3)

Computational problems and their associated algorithms arising from the creation, analysis, and management of bioinformatics data. Genetic sequence comparison and alignment, physical mapping, genome sequencing and assembly, clustering of DNA microarray results in gene expression studies, computation of genomic rearrangements and evolutionary trees. Credit will not be given for both CSE 308 (BIOE 308) and CSE 408 (BIOE 408). No prior background in biology is assumed. Prerequisites: CSE 17 or CSE 18 or permission of the instructor.

CSE 313. Computer Graphics (3)

Computer graphics for animation, visualization, and production of special effects: displays, methods of interaction, images, image processing, color, transformations, modeling (primitives, hierarchies, polygon meshes, curves and surfaces, procedural), animation (keyframing, dynamic simulation), rendering and realism (shading, texturing, shadows, visibility, ray tracing), and programmable graphics hardware. Prerequisite: CSE 109 or consent of the instructor.

CSE 318. Introduction to the Theory of Computation (3)

Formal study of theoretical computational models: finite automata, pushdown automata, and Turing machines. Study of formal languages: regular, context-free, and decidable languages. Prerequisite: CSE 261 or MATH 243.

CSE 319. Image Analysis and Graphics (3)

State-of-the-art techniques for fundamental image analysis tasks: feature extraction, segmentation, registration, tracking, recognition, search (indexing and retrieval). Related computer graphics techniques: modeling (geometry, physically-based, statistical), simulation (data-driven, interactive), animation, 3D image visualization, and rendering. Credit will not be given for both CSE 319 and CSE 419. Prerequisite: CSE 313 or consent of the instructor.

CSE 320. (BIOE 320) Biomedical Image Computing and Modeling (3)

Biomedical image modalities, image computing techniques, and imaging informatics systems. Understanding, using, and developing algorithms and software to analyze biomedical image data and extract useful quantitative information: Biomedical image modalities and formats; image processing and analysis; geometric and statistical modeling; image informatics systems in biomedicine. Credit will not be given for both CSE 320 and CSE 420. Prerequisite: Math 205 and CSE 109, or consent of instructor.

CSE 326. Pattern Recognition (3)

Bayesian decision theory and the design of parametric and nonparametric classifiers: linear (perceptrons), quadratic, nearest-neighbors, neural nets. Machine learning techniques: boosting, bagging. High-performance machine vision systems: segmentation, contextual analysis, adaptation. Students carry out projects, e.g. on digital libraries and vision-based Turing tests. Credit will not be given for both CSE 326 and CSE 426. Prerequisites: CSE 109, CSE 340, Math 205, and Math 231, or consent of instructor.

CSE 327 (COGS 327). Artificial Intelligence Theory and Practice (3)

Introduction to the field of artificial intelligence: Problem solving, knowledge representation, reasoning, planning and machine learning. Use of AI systems or languages. Advanced topics such as natural language processing, vision, robotics, and uncertainty. Prerequisite: CSE 15 or CSE 17 or CSE 18.

CSE 331. User Interface Systems and Techniques (3)

Principles and practice of creating effective human-computer interfaces. Design and user evaluation of user interfaces; design and use of interface building tools. Programming projects using a variety of interface building tools to construct and evaluate interfaces. Prerequisite: CSE 17 or CSE 18 or consent of the instructor.

CSE 334 Software System Security (3)

Survey of common software vulnerabilities: buffer overflows, format string attacks, cross-site scripting, and botnets. Discussion of common defense mechanisms: static code analysis, reference monitors, language-based security, secure information flow, and others. Credit will not be given for both CSE 334 and CSE 434. Prerequisite: CSE 109 and CSE 262

CSE 335. Topics on Intelligent Decision Support Systems (3)

Intelligent decision support systems (IDSSs). AI techniques that are used to build IDSSs: case-based reasoning, decision trees and knowledge representation. Applications of these techniques: help-desk systems, e-commerce, and knowledge management. Credit will not be given for both CSE 335 and CSE 435. Prerequisite: CSE 327 or CSE 109.

CSE 336 (ECE 336). Embedded Systems (3)

Use of small computers embedded as part of other machines. Limited-resource microcontrollers and state machines from high description language. Embedded hardware: RAM, ROM, flash, timers, UARTs, PWM, A/D, multiplexing, debouncing. Development and debugging tools running on host computers. Real-Time Operating System (RTOS) semaphores, mailboxes, queues. Task priorities and rate monotonic scheduling. Software architectures for embedded systems. Prerequisite: CSE 17 or CSE 18.

CSE 337 Reinforcement Learning Fall (3)

Algorithms for automated learning from interactions with the environment to optimize long-term performance. Markov decision processes, dynamic programming, temporal-difference learning, Monte Carlo reinforcement learning methods. Credit will not be given for both CSE 337 and CSE 437. Prerequisite: Math 231 and CSE 109

CSE 340 (MATH 340). Design and Analysis of Algorithms (3)

Algorithms for searching, sorting, manipulating graphs and trees, finding shortest paths and minimum spanning trees, scheduling tasks, etc.: proofs of their correctness and analysis of their asymptotic runtime and memory demands. Designing algorithms: recursion, divide-and-conquer, greediness, dynamic programming. Limits on algorithm efficiency using elementary NP-completeness theory. Credit will not be given for both CSE 340 (Math 340) and CSE 441 (Math 441). Prerequisites: MATH 22 and CSE 261 (MATH 261).

CSE 341. Database Systems, Algorithms, and Applications (3)

Design of large databases; normalization; query languages (including SQL); Transaction-processing protocols; Query optimization; performance tuning; distributed systems. Not available to students who have credit for CSE 241 or IE 224. Prerequisites: CSE 17 or CSE 18 or consent of the instructor.

CSE 342. Fundamentals of Internetworking (4)

Architecture and protocols of computer networks. Protocol layers; network topology; data-communication principles, including circuit switching, packet switching and error control techniques; sliding window protocols, protocol analysis and verification; routing and flow control; local and wide area networks; network interconnection; client-server interaction; emerging networking trends and technologies; topics in security and privacy. Prerequisite: CSE 109.

CSE 343. Network Security (3)

Overview of network security threats and vulnerabilities. Techniques and tools for detecting, responding to and recovering from security incidents. Fundamentals of cryptography. Hands-on experience with programming techniques for security protocols. Credit will not be given for both CSE 343 and CSE 443. Prerequisite: CSE 342 or CSE 303 or CSE 265

CSE 345. WWW Search Engines (3)

Study of algorithms, architectures, and implementations of WWW search engines; Information retrieval (IR) models; performance evaluation; properties of hypertext crawling, indexing, searching and ranking; link analysis; parallel and distributed IR; user interfaces. Credit will not be given for both 345 and 445. Prerequisite: CSE 109.

CSE 347. Data Mining (3)

Overview of modern data mining techniques: data cleaning; attribute and subset selection; model construction, evaluation and application. Fundamental mathematics and algorithms for decision trees, covering algorithms, association mining, statistical modeling, linear models, neural networks, instance-based learning and clustering covered. Practical design, implementation, application, and evaluation of data mining techniques in class projects. Credit will not be given for both CSE 347 and CSE 447. Prerequisites: Either CSE 17 or CSE 18 and MATH 231, or BIS 15 and ECO 145.

CSE 348. AI Game Programming (3)

Contemporary computer games: techniques for implementing the program controlling the computer component; using Artificial Intelligence in contemporary computer games to enhance the gaming experience: pathfinding and navigation systems; group movement and tactics; adaptive games, game genres, machine scripting language for game designers, and player modeling. Credit will not be given for both CSE 348 and CSE 448. Prerequisites: CSE 327 or CSE 109.

CSE 350. Special Topics (3)

Selected topics in the field of computer science not included in other courses. May be repeated for credit.

CSE 360. Introduction to Mobile Robotics (3)

Algorithms employed in mobile robotics for navigation, sensing, and estimation. Common sensor systems, motion planning, robust estimation, bayesian estimation techniques, Kalman and Particle filters, localization and mapping. Credit will not be given for both CSE 360 and CSE 460. Prerequisites: Math 23, Math 205 and Math 231.

CSE 363. Network Systems Design (3)

Design principles and issues of network systems. Traditional protocol processing systems and latest network processor/processing technologies. Packet processing, protocol processing, classification and forwarding, switching fabrics, network processors, and network systems design tradeoffs. Prerequisite: CSE 342, or CSE 404, or instructor’s permission.

CSE 375. Hardware & Software Topics in Parallel Computing (3)

Parallel computer architectures, parallel languages, parallelizing compilers and operating systems. Design, implementation, and analysis of parallel algorithms for scientific and data-intensive computing. Credit is not given for both CSE 375 and CSE 475. Prerequisites: CSE 201 and CSE 303 previously or concurrently, or graduate standing.

CSE 379. Senior Project (3)

Design, implementation, and evaluation of a computer science capstone project conducted by student teams working from problem definition to testing and implementation; written progress reports supplemented by oral presentations. Prerequisite: senior standing and CSE 130.

CSE 392. Independent Study (1-3)

An intensive study, with report, of a topic in computer science which is not treated in other courses. May be repeated for credit. Prerequisite: Consent of instructor.

For Graduate Students

CSE 401 (ECE 401). Advanced Computer Architecture (3)

Design, analysis and performance of computer architectures; high-speed memory systems; cache design and analysis; modeling cache performance; principle of pipeline processing, performance of pipelined computers; scheduling and control of a pipeline; classification of parallel architectures; systolic and data flow architectures; multiprocessor performance; multiprocessor interconnections and cache coherence. Prerequisite: CSE 201 or equivalent.

CSE 403. Advanced Operating Systems (3)

Principles of operating systems with emphasis on hardware and software requirements and design methodologies for multi-programming systems. Global topics include the related areas of process management, resource management, and file systems. Prerequisite: CSE 303 or equivalent.

CSE 404 (ECE 404). Computer Networks (3)

Study of architecture and protocols of computer networks. The ISO model; network topology; data-communication principles, including circuit switching, packet switching and error control techniques; sliding window protocols, protocol analysis and verification; routing and flow control; local area networks; network interconnection; topics in security and privacy.

CSE 405. Advanced Programming Languages (3)

Basic ideas behind modern programming language design, with a focus on functional languages: type systems, modularity, operational semantics, and others. Students need to have some mathematical maturity, including familiarity with proof techniques such as induction.

CSE 406. Research Methods (3)

Technical writing, reading the literature critically, analyzing and presenting data, conducting research, making effective presentations, and understanding social and ethical responsibilities. Topics drawn from probability and statistics, use of scripting languages, and conducting large-scale experiments. Prerequisites: First-year status in either the CS or CompE Ph. D. program.

CSE 408. Bioinformatics: Issues and Algorithms (3)

Computational problems and their associated algorithms arising from the creation, analysis, and management of bioinformatics data. Genetic sequence comparison and alignment, physical mapping, genome sequencing and assembly, clustering of DNA microarray results in gene expression studies, computation of genomic rearrangements and evolutionary trees. This course, a version of 308 for graduate students requires advanced assignments. Credit will not be given for both BIOE 308 (CSE 308) and BIOE 408 (CSE 408). No prior background in biology is assumed. Prerequisites: CSE17 or CSE18 or by Permission of the instructor.

CSE 409. Theory of Automata and Formal Grammars (3)

Finite automata. Pushdown automata. Relationship to definition and parsing of formal grammars. Prerequisite: CSE 318.

CSE 411. Advanced Programming Techniques (3)

Deeper study of programming techniques, data structures, backtracking, recursion. Applications of basic theoretical disciplines such as automata theory and formal language theory. Assignments using a contemporary programming language. Prerequisite: CSE 17 or CSE 18 or consent of department head. Credit will not be given for both CSE 109 and CSE 411.

CSE 419. Image Analysis and Graphics (3)

State-of-the-art techniques for fundamental image analysis tasks; feature extraction, segmentation, registration, tracking, recognition, search (indexing and retrieval). Related computer graphics techniques: modeling (geometry, physically-based, statistical), simulation (data-driven, interactive), animation, 3D image visualization, and rendering. This course, a graduate version of CSE 319, requires additional advanced assignments. Credit will not be given for both CSE 319 and CSE 419. Prerequisite: CSE 313 or consent of the instructor.

CSE 420 (BIOE 420). Biomedical Image Computing and Modeling (3)

Biomedical image modalities, image computing techniques, and imaging informatics systems. Understanding, using, and developing algorithms and software to analyze biomedical image data and extract useful quantitative information: Biomedical image modalities and formats; image processing and analysis; geometric and statistical modeling; image informatics systems in biomedicine. This course, a graduate version of BIOE 320, requires additional advanced assignments. Credit will not be given for both BIOE 320 and BIOE 420. Prerequisite: Math 205 and CSE 109, or consent of instructor

CSE 424. Advanced Communication Networks (3)

Current and emerging research topics in communication networks: network protocols, network measurement, internet routing, network security, adhoc and sensor networks, disruption tolerant networks. Lecture, readings, and discussion, plus a project. Prerequisites: CSE 342 or CSE 404, and Math 231, or permission of instructor.

CSE 426. Pattern Recognition (3)

Bayesian decision theory and the design of parametric and nonparametric classifiers: linear (perceptrons), quadratic, nearest-neighbors, neural nets. Machine learning techniques: boosting, bagging. High-performance machine vision systems: segmentation, contextual analysis, adaptation. Students carry out projects, e.g. on digital libraries and vision-based Turing tests. This course, a version of CSE 326 for graduate students requires advanced assignments. Credit will not be given for both CSE 326 and CSE 426. Prerequisites: CSE 109, CSE 340, Math 205, Math 231, or consent of instructor.

CSE 428. Semantic Web Topics (3)

Theory, architecture and applications of the Semantic Web. Issues in designing distributed knowledge representation languages, ontology development, knowledge acquisition, scalable reasoning, integrating heterogeneous data sources, and web-based agents.

CSE 431. Intelligent Agents (3)

Principles of rational autonomous software systems. Agent theory; agent architectures, including logic-based, utility-based, practical reasoning, and reactive; multi-agent systems; communication languages; coordination methods including negotiation and distributed problem solving; applications. Prerequisite: CSE 327 or equivalent.

CSE 434. Software System Security (3)

Survey of common software vulnerabilities: buffer overflows, format string attacks, cross-site scripting, and botnets. Discussion of common defense mechanisms: static code analysis, reference monitors, language-based security, secure information flow, and others. The graduate version differs from the undergraduate version by requiring advanced assignments and projects. Credit will not be given for both CSE 334 and CSE 434. Prerequisite: Graduate Standing in Computer Science or Consent of Instructor

CSE 435. Topics on Intelligent Decision Support Systems (3)

AI techniques used to build IDSSs: case-based reasoning, decision trees and knowledge representation. Applications: helpdesk systems, e-commerce, and knowledge management. This course, a version of 335 for graduate students, requires research projects and advanced assignments. Credit will not be given for both CSE 335 and CSE 435.

CSE 437. Reinforcement Learning and Markov Decision Processes (3) fall

Formal model based on Markov decision processes for automated learning from interactions with stochastic, incompletely known environments. Markov decision processes, dynamic programming, temporal-difference learning, Monte Carlo reinforcement learning methods. Credit will not be given for both CSE 337 and CSE 437. Prerequisite: Graduate Standing in Computer Science or Consent of Instructor

CSE 441 (Math 441). Advanced Algorithms (3) spring

This is a graduate-level version of CSE 340 (Math 340) Design and Analysis of Algorithms, covering that course’s content plus matroid theory, linear programming, max-flow, computational geometry, matching patterns in strings, randomized algorithms, and proximation algorithms for NP-complete problems. Credit will not be given for both CSE 340 (Math 340) and CSE 441 (Math 441).

CSE 443. Network Security (3)

Overview of network security threats and vulnerabilities. Techniques and tools for detecting, responding to and recovering from security incidents. Fundamentals of cryptography. Hands-on experience with programming techniques for security protocols. This course, a version of CSE 343 for graduate students, requires research projects and advanced assignments. Credit will not be given for both CSE 343 and CSE 443. Prerequisite: CSE 342 or CSE 303 or CSE 403 or CSE/ECE 404.

CSE 445. WWW Search Engines (3)

Study of algorithms, architectures, and implementations of WWW search engines. Information retrieval (IR) models; performance evaluation; properties of hypertext crawling, indexing, searching and ranking; link analysis; parallel and distributed IR; user interfaces. This course, a version of 345 for graduate students, requires research projects and advanced assignments. Credit will not be given for both CSE 345 and CSE 445.

CSE 447. Data Mining (3)

Modern data mining techniques: data cleaning; attribute and subset selection; model construction, evaluation and application. Algorithms for decision trees, covering algorithms, association rule mining, statistical modeling, model and regression trees, neural networks, instance-based learning and clustering covered. This course, a version of CSE 347 for graduate students, requires research projects and advanced assignments. Credit will not be given for both CSE 347 and CSE 447. Prerequisites: Math 231 or permission of the instructor

CSE 448. AI Game Programming (3)

Contemporary computer games: techniques for implementing the program controlling the computer opponent; using Artificial Intelligence in contemporary computer games to enhance the gaming experience: path-finding and navigation systems; group movement and tactics; adaptive games, game genres, machine scripting language for game designers, and player modeling. This course, a version of 348 for graduate students requires advanced assignments. Credit will not be given for both CSE 348 and CSE 448.

CSE 450. Special Topics (3)

Selected topics in computer science not included in other courses. May be repeated for credit.

CSE 460. Mobile Robotics (3)

Algorithms employed in mobile robotics for navigation, sensing, and estimation. Common sensor systems, motion planning, robust estimation, Bayesian estimation techniques, Kalman and particle filters, localization and mapping. This course, a version of CSE 360 for graduate students will require an independent project to be presented in class. Credit will not be given for both CSE 360 and CSE 460. Prerequisites: Math 23, Math 205 and Math 231 or their equivalents.

CSE 475. Principles and Practice of Parallel Computing (3)

Parallel computer architectures, parallel languages, parallelizing compilers and operating systems. Design, implementation, and analysis of parallel algorithms for scientific and data-intensive computing. This is a graduate version of CSE 375. As such, it will require additional assignments. Credit is not given for both CSE 375 and CSE 475.

CSE 491. Research Seminar (1-3)

Regular meetings focused on specific topics related to the research interests of department faculty. Current research will be discussed. Students may be required to present and review relevant publications. May be repeated for credit up to a maximum of three (3) credits. Prerequisite: Consent of instructor.

CSE 492. Independent Study (1-3)

An intensive study, with report of a topic in computer science that is not treated in other courses. May be repeated for credit. Prerequisite: Consent of instructor.