| |
The Program
Advisement
Transfer Policy
Honors
Special Programs
Courses
Computer Science-B.A.
Computer Engineering - B.S.
Computer Science - B.S./M.S.
Computer Science/Business Administration - B.A./M.B.A.
Computer Science - Minor
|
 |
 |
Computer Science
Department of Computer Science and Engineering
School of Engineering and Applied Sciences, College of Arts and Sciences
201 Bell Hall
North Campus
Buffalo, NY 14260-2000
(716) 645-3180
Fax: (716) 645-3464
Web: Computer Science and Engineering
Bharat Jayaraman, Interim Chair
Helene Kershner, Assistant Chair
Peter D. Scott, Director of Undergraduate Studies
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 the following:
Algorithms is the study of effective and efficient procedures for solving
problems on a computer.
Theory of Computation concerns the meaning and complexity of algorithms,
as well as the limits of what can be computed in principle.
Artificial Intelligence concerns the computational understanding of what
is commonly called intelligent behavior, as well as the creation of artifacts
that exhibit such behavior.
Computer Architecture concerns the structure and functionality of computers,
as well as their implementation in terms of electronic language.
Multimedia is the study of the representation, communication, and
effective use of data derived from multiple sources, including text, audio,
graphics and video.
Software Systems is the study of the structure and implementation of
large programs. It includes 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.
Upon admission, the Department of Computer Science and Engineering will
write 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 B.A. or the B.S. 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.
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.
Also, 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 that will help the department
determine whether courses taken at another institution are equivalent
to UB courses; such evidence usually takes the form of a syllabus or catalog
description.
Departmental distinction will be given to students whose overall GPA is
at least 3.2 and whose GPA in those CSE, MTH, and STA courses used to
fulfill the departmental requirements is within the following ranges:
3.8 - 4.0 = highest distinction
3.7 - 3.79 = high distinction
3.6 - 3.69 = distinction
In addition, students must engage in creative or scholarly work on a
topic that is approved by a faculty member in computer science. This work
is done by completing at least 6 credit hours of CSE499 Independent Study.
A final report, following the usual conventions of scholarly writing,
is also required. This report, about fifteen pages in length, should be
approved by a computer science faculty member.
The Department of Computer Science and Engineering offers a combined program
permitting highly qualified students to graduate in four or five years
with both B.S. and M.S. degrees in computer science.The Department of
Computer Science and Engineering in conjunction with the School of Management
offers a five-year program leading to both a bachelor in computer science
degree and a master of business administration (M.B.A.) degree. This combined
program reduces by one year the usual pattern of a four-year undergraduate
degree and a two-year M.B.A. program. A B.S. degree in computational physics
is offered jointly with the physics department. A double degree B.A. in
computer science and B.S. in civil engineering is offered, as is a double
degree B.S. in computer science and B.S. in mechanical engineering. These
programs are all offered through the College of Arts and Sciences. In
addition, a B.S. degree in computer engineering is offered by the Department
of Computer Science and Engineering through the School of Engineering
and Applied Science. For further information see page 99.
Note: Course offerings vary by semester.
101 Computers: A General Introduction (4) (F;
Sp)
Prerequisite: basic knowledge of arithmetic. No experience with computers
needed.
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. LEC/LAB
111-112 Great Ideas in Computer Science (4-4)
(F; Sp)
Prerequisite: CSE111 is a prerequisite for CSE112
Two-course sequence 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
include algorithm design, introduction to programming, structured programming,
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. LEC/LAB
113 Introduction to Computer Programming I (4)
(F; Sp)
An 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 student
should not take this course. LEC/REC
114 Introduction to Computer Programming II (4)
(F; Sp)
Prerequisite: CSE113
A continuation of CSE113 for nonmajors. Currently required for some School
of Management majors and appropriate for others seeking additional programming
skills. Topics include working with data structures, such as stacks, queues,
linked lists, and binary trees. Recursive programming techniques. The
use of modern object-oriented programming methodologies, such as class
inheritance, polymorphism, and exceptions, is emphasized. Credit is not
given for both CSE114 and CSE116. Students who decide to pursue a CSE
degree after having taken CSE113 must continue their studies with CSE115
rather than CSE114. Neither CSE113 nor CSE114 can count towards a CSE
degree. Admitted computer science and computer engineering majors should
not take this course. LEC/REC/LAB
115 Introduction to Computer Science for Majors
I (4) (F; Sp)
Prerequisite: None. No previous programming experience required.
Corequisite: MTH141 or equivalent
Designed to provide the fundamentals of the field to computer science
and computer engineering majors, this course introduces students to algorithm
design and implementation in a modern, high-level programming language.
It emphasizes problem solving by abstraction. Also briefly covers the
social and ethical aspects of computing. 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. LEC/REC
116 Introduction to Computer Science for Majors
II (4) (F; Sp)
Prerequisite: CSE115 or permission of instructor
Continuation of CSE115. Heavily emphasizes abstract data types (ADTs)
and object-oriented methodology, where the student is expected not only
to understand ADTs but also to design and implement robust ADTs using
a modern object-oriented programming language. Object-oriented techniques
which support sound software engineering, such as encapsulation, polymorphism
and inheritance as well as the use of more complex design patterns are
further emphasized. 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. The analysis of algorithm complexity (0-notation) is introduced.
Credit not given for both CSE114 and CSE116. LEC/REC
191-192 Introduction to Discrete Mathematics
(4-4) (F; Sp)
CSE191 Prerequisite: Working knowledge of a programming language.
CSE192 Prerequisite: CSE191
Two-semester sequence provides mathematical foundations for further studies
in computer science. Topics in CSE191 include sets, relations, functions,
mathematical induction, fundamental counting methods, differential equations,
and sequences and series. CSE191 is required for computer science and
computer engineering majors. Topics in CSE192 include discrete probability,
mathematical logic, linear algebra, and graph theory. CSE192 is not required
for computer science and computer engineering majors. LEC/REC
199 Freshman Seminar (3)
Prerequisites: four years of high school mathematics, knowledge of
some programming language
Designed for honors students in coordination with the mathematics department.
Designed as a seminar in which students solve a variety of problems relating
mathematics and computer science. Some problems are purely mathematical;
some are about computer applications. LEC
202 Programming in Lisp (1)
Prerequisite: CSE116
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.
LAB
241 Digital Systems (4) (F)
Prerequisite: CSE116
Introduces computer architecture and assembly-language programming; covers
digital logic, machine-level representation of data, arithmetic algorithms,
assembly-level machine organization, and programming. Provides programming
experience through laboratory exercises. LEC/REC
250 Algorithms and Data Structures (4) (Sp)
Prerequisites: CSE116, CSE191 (or MTH191), MTH142
Provides a rigorous introduction to the analysis of algorithms and data
structures. Topics include order notation, algorithmic strategies, and
time-space analysis and trade-offs in various sorting algorithms, as well
as list and tree traversal algorithms, and hashing. The importance of
choosing appropriate data structures when solving a problem is illustrated
by programming projects. LEC/REC
305 Introduction to Programming Languages (4)
(F)
Prerequisites: CSE250
Covers concepts from procedural and declarative languages. The structure
of procedural languages is examined in detail, including data and control
abstractions, type systems, and the effect of language constructs on the
underlying implementations. Alternative programming paradigms, such as
functional, logic, and object-oriented paradigms, are briefly introduced.
LEC/REC
337 Introduction to Scientific Computing (4)(S)
Prerequisite: MTH141
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.
LEC/REC
341 Computer Organization (4) (F)
Prerequisite: CSE241 or EE 378
Examines how the various low-level components of a computer system are
integrated to form a larger system. Topics include techniques for controller
design, memory system organization and architecture, and I/O and interrupt
systems. Parallel processing is introduced. A family of processors is
studied to illustrate the concepts. LEC/REC
379 Introduction to Microprocessors and Microcomputers
(3) (Sp)
Prerequisite: CSE241 or EE 378
Microprocessor architecture, machine language programming, microprocessor
assemblers, assembly language programming, software development, memory
and I/O interface, interrupts microprocessor system design and microprocessor
applications. LEC
380 Introduction to Microprocessors Lab (3) (Sp)
Corequisite: CSE379
A microprocessor system and its application in embedded devices. This
course is the laboratory component to CSE379. 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. LAB
396 Introduction to the Theory of Computation
(4) (Sp)
Prerequisites: CSE191 (or MTH191) and CSE250
Covers fundamental machine and formal-language models: finite automata
and regular languages; pushdown automata and context-free languages; Turing
machines and recursive/recursively enumerable languages. Also introduces
computational theory. LEC/REC
411 Introduction to Computer Systems Administration
(4) (Sp)
Prerequisites: CSE241 or CSE379
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. LEC/REC
421 Introduction to Operating Systems (4) (Sp)
Prerequisites: CSE241, CSE305
Covers the principles and techniques in the design of operating systems.
Concepts of operating systems are described in terms of functions, structure,
and implementation, with particular emphasis on 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. LEC/REC
422 Operating Systems Internals (4) (Sp)
Prerequisite: CSE421 or permission of instructor
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.
LEC/REC
431 Algorithms Analysis and Design I (4)
Prerequisite: CSE250
The design and analysis, in terms of both time and space, of algorithms.
Topics include sorting, searching, graph theory, computational geometry,
and NP-completeness. Paradigms covered include divide-and-conquer, greedy,
dynamic programming, and heuristic techniques. LEC/REC
437 Introduction to Numerical Analysis I (4)
Prerequisites: CSE115; MTH242 or MTH306; MTH309, or permission of instructor
Lagrangian interpolation; quadrature formulas; difference equations; numerical
solution of ordinary differential equations; predictor-corrector and Runge-Kutta
methods. Cross-listed with MTH437. Offered irregularly. LEC/REC
438 Introduction to Numerical Analysis II (4)
Prerequisite: CSE437 or MTH437
Solution of linear and nonlinear systems of equations: calculation of
eigenvalues and eigenvectors; introduction to numerical solution of boundary
value problems for both ordinary and partial differential equations. Cross-listed
with MTH438. LEC/REC
442 Software Engineering (3) (F)
Prerequisite: CSE305
Examines in detail the software development process. Topics include software
life-cycle models, functional and object-oriented designs, code and design
reading, structured walk-throughs, and various techniques for systematic
software testing. There is continued coverage of the social, ethical,
and legal aspects of computing beyond CSE113. Offered irregularly. LEC/REC
443 Introduction to Language Processors (4)
Prerequisites: CSE305, CSE396
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. Compiler construction tools LEX and YACC are used for programming
projects. LEC/REC
444 Co-op Program, Work Session I (1) (F)
Prerequisites: full-time status, participation in the Co-op Program
Professional computer science work experience gained off campus. Supervised
jointly by academic and industrial preceptors. LAB
445 Co-op Program, Work Session II (1) (Sp)
Prerequisites: full-time status, participation in the Co-op Program
Professional computer science work experience gained off campus. Supervised
jointly by academic and industrial preceptors. LAB
446 Co-op Program, Work Session III (1) (Su)
Prerequisites: full-time status, participation in the Co-op Program
Professional computer science work experience gained off campus. Supervised
jointly by academic and industrial preceptors. LAB
451 Program Development (4)
Prerequisite: CSE305
Introduces the simultaneous development and verification of correct programs.
In preparation for this, the first part of the course contains lectures
in formal logic and in program semantics. The second part involves actual
examples of program development. Offered irregularly. LEC/REC
452 VLSI Testing (4) (Sp)
Prerequisite: CSE497 or permission of instructor
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. Students are expected 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 the students are free to exercise
a combination of ideas. LEC
462 Database Concepts (4)
Prerequisite: CSE305
Basic design principles of systems for storing and retrieving exceptionally
large amounts of information are discussed. Topics include hardware characteristics;
file organization and evaluation; data models; database schemas; and the
three main database approaches: relational, hierarchical, and network.
Students implement their own prototype database systems. LEC/REC
463 Knowledge Representation (4) (F)
Prerequisite: CSE305 or permission of instructor
Introduces the issues and techniques of representing knowledge and
belief in a computer system; syntax and semantics of various representational
formalisms including predicate logic, semantic networks, and frames. Classic
papers are read and current research issues discussed. LEC/REC
467 Computational Linguistics (4) (Sp)
Prerequisite: CSE305 or permission of instructor
Introduces computational models of understanding natural languages. Syntactic
and semantic parsing, generation, knowledge representation techniques.
LEC/REC
472 Introduction to Artificial Intelligence (4)
(Sp)
Prerequisites: CSE202, CSE305
Surveys artificial intelligence: the study of how to program computers
to behave in ways normally attributed to intelligence when observed in
humans. Topics include heuristic search and problem solving, reasoning
and inference, natural-language understanding, knowledge representation,
image understanding, learning, and cognitive modeling. LEC/REC
473 Introduction to Computer Vision and Image
Processing (4) (Sp)
Prerequisite: CSE305 or permission of instructor
Introduces those areas of artificial intelligence that relate to fundamental
issues and techniques of computer vision and image processing. The emphasis
is on 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. LEC/REC
474 Introduction to Machine Learning (4) (F)
Teaching computer programs to improve their performance through guided
training and unguided experience. Symbolic and numerical approaches. Concept
learning, decision trees, neural nets, statistical tests, Bayesian learning,
computational learning theory, instance-based learning, reinforcement
learning, and fuzzy logic. LEC/REC
475 Modern Computer Systems (4) (F)
Prerequisite: CSE341 or CSE380
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. LEC/LAB/REC
480 Computer Graphics (4) (Sp)
Prerequisites: CSE250, MTH309
General introduction to computer graphics; graphic devices and processors;
graphic input techniques; programming and data structures for graphics;
basic geometric transformations (translation rotation, scaling, and projection);
visualization techniques and the hidden-line/surface problem; shaded pictures;
device drivers; user interface ergonomics. LEC/REC
487 Information Structures for Computer Engineers
(3)
Prerequisite: C language programming ability
Overview of algorithms and their description, arrays, stacks and queues,
linked lists, trees, graphs, sorting and searching, files, and string
processing. LEC
489 Modern Networking Concepts (3) (F)
Prerequisites: C language programming; exposure to probability, statistics,
and communications theory
Introduces basic elements of modern computer and telecommunications networks.
A hybrid five-layer reference model resembling the popular TCP/IP model
and the OSI's seven-layer model is discussed. In each layer, the state-of-the-art
hardware and software technologies are introduced. These include, for
example, fiber-optic and mobile/cellular communications in the physical
layer, wavelength/time division multiple access protocols in the data
link layer; traffic shaping and policing in the network layer; ATM adaptation
layer protocols in the transport layer; and, finally, network security
in the application layer. LEC
490 Design of High-Performance Computing Systems
(4) (F)
Prerequisite: CSE379
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. LEC/REC
497 Introduction to VLSI Electronics (4) (F)
Prerequisites: EE 353 and CSE379
Introduces VLSI electronics. VLSI is the integration of a large number
of logic gates on a single semiconductor chip. Applications of VLSI include
memory, microprocessors, 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. LEC
498 Internship (1-5) (F; Sp)
Prerequisites: accepted CSE major and personal interview with an advisor
in computer science
A 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 the requirements for the B.A. or B.S.). No
more than 5 credit hours of CSE498 may be taken. Offered every semester.
TUT
499 Independent Study (1-4)
(F; Sp)
Prerequisite: permission of instructor, preferably during the previous
semester; see list of faculty research interests. Students seeking departmental
distinction (honors) must register for at least 6 credit hours of CSE499
(every semester).
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.) TUT
Minimum GPA of 2.0 overall
Minimum GPA of 2.5 in CSE116 and MTH142 (unless exempted by score on SAT,
Advanced Placement credits, or transfer credits); prerequisites are satisfied
with grade of C- or better.
CSE115 Introduction to Computer Science for Majors I
CSE116 Introduction to Computer Science for Majors II
CSE191 Introduction to Discrete Mathematics
CSE241 Digital Systems
CSE250 Algorithms and Data Structures
CSE305 Introduction to Programming Languages
CSE341 Computer Organization
CSE396 Introduction to the Theory of Computation
CSE421 Introduction to Operating Systems
CSE442 Software Engineering
MTH141 College Calculus I
MTH142 College Calculus II
One calculus-based probability or statistics course (such as MTH411, STA401,
or EAS305)
Two science and engineering sequence courses
Five external concentration courses
See Baccalaureate Degree Requirements (page 254) for general education
and remaining university requirements.
First Year
Fall-CSE115, MTH141
Spring-CSE116, MTH142, one external concentration course
Second Year
Fall-CSE191, CSE241, one science and engineering sequence course
Spring-One calculus-based probability or statistics course (such as MTH411,
STA401, or EAS305), CSE250, one science and engineering sequence course
Third Year
Fall-CSE305, CSE341, one external concentration course
Spring-CSE396, CSE442
Fourth Year
Fall-Two external concentration courses
Spring-CSE42, one external concentration course
A total of five courses from the same academic department, at least two
of which must be 300-level or higher
Any two-course science and engineering sequence from biology, chemistry,
geology, physics, or any department in the School of Engineering and Applied
Sciences except the CSE department
Total required credit hours in computer science - 40
Total required credit hours outside computer science - 40
Minimum GPA of 2.0 overall
Minimum GPA of 2.5 in CSE116 and MTH142*; prerequisites are satisfied
with a grade of C- or better.
*Unless exempted by score on SAT, Advanced Placement credits, or transfer
credits
CSE115 Introduction to Computer Science for Majors I
CSE116 Introduction to Computer Science for Majors II
CSE191 Introduction to Discrete Mathematics
CSE241 Digital Systems
CSE250 Algorithms and Data Structures
CSE305 Introduction to Programming Languages
CSE341 Computer Organization
CSE396 Introduction to the Theory of Computation
CSE421 Introduction to Operating Systems
CSE442 Software Engineering
MTH141 College Calculus I
MTH142 College Calculus II
One calculus-based probability or statistics course (such as MTH411, STA401,
or EAS305)
Two science and engineering sequence courses
Two 400-level CSE courses (excepting internship, co-op, and required 400-level
courses)
One 200-level MTH or STA course
One 300-level MTH or STA course
See Baccalaureate Degree Requirements (page 254) for general education
and remaining university requirements.
First Year
Fall-CSE115, MTH141
Spring-CSE116, MTH142
Second Year
Fall-CSE191, CSE241, one 200-level MTH or STA course
Spring-One calculus-based probability or statistics course (such as MTH411,
STA401, or EAS305), CSE250
Third Year
Fall-CSE305, CSE341, one 300-level MTH or STA course
Spring-CSE396, CSE442
Fourth Year
Fall-One science and engineering sequence course, two 400-level CSE courses
Spring-One science and engineering sequence course, CSE421
Any two-course science and engineering sequence from biology, chemistry,
geology, physics, or any department in the School of Engineering and Applied
Sciences except the CSE department
Total required credit hours in computer science - 48
Total required credit hours outside computer science - 28
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 page 255.
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. It is recommended candidates have completed CSE115, CSE116,
CSE241, CSE250, MTH141, MTH142, MTH191 and a calculus-based probability
or statistics course prior to applying.
CSE115 Introduction to Computer Science for Majors I
CSE116 Introduction to Computer Science for Majors II
CSE191 Introduction to Discrete Mathematics
CSE241 Digital Systems
CSE250 Algorithms and Data Structures
CSE341 Computer Organization
CSE396 Introduction to the Theory of Computation
CSE442 Software Engineering
CSE505 Fundamentals of Programming Languages
CSE521 Introduction to Operating Systems
CSE531 Analysis of Algorithms or CSE596 Introduction to the Theory of
Computation
MTH141 College Calculus I
MTH142 College Calculus II
One of the following: CSE572 Knowledge-Based Artificial Intelligence,
CSE573 Introduction to Computer Vision and Image Processing, CSE574 Introduction
to Machine Learning, CSE655 Introduction to Pattern Recognitioin
One of the following: CSE552 VLSI (Very Large Scale Integration) Testing,
CSE589 Modern Networking Concepts, CSE590 Computer Architecture, CSE597
Introduction to VLSI Electronics
One additional 500-level CSE course (but not CSE503 Computer Science for
Nonmajors I, CSE504 Computer Science for Nonmajors II, or CSE507 Object
Oriented Applications and Systems Design (for nonmajors))
One additional 600-level CSE course
One calculus-based probability or statistics course (e.g., MTH411, STA401,
EAS305)
One 200-level MTH or STA course
One 300-level MTH or STA course
Two science and engineering sequence courses
Capstone event (M.S. Thesis or M.S. Project)
See Baccalaureate Degree Requirements (page 254) for general education
and remaining university requirements.
A minimum of 30 graduate credits are also required by the Graduate
School to satisfy M.S. university requirements. A minimum of 134 credits,
including undergraduate and graduate elective courses, are required altogether.
First Year
Fall-CSE115, MTH141
Spring-CSE116, MTH142, CSE191
Second Year
Fall-CSE241, CSE250, one calculus-based probability or statistics course
(e.g., MTH411, STA401, EAS305)
Spring-CSE396, CSE341, one 200-level MTH or STA course
Third Year
Fall-CSE505, one 300-level MTH or STA course, one science and engineering
sequence course
Spring-CSE572, CSE442, one science and engineering sequence course
Fourth Year
Fall-CSE521, CSE531
Spring-CSE590, one 500-level CSE course (but not CSE503, CSE504, or CSE507),
one 600-level CSE course
First Year
Fall-CSE115, MTH141
Spring-CSE116, MTH142
Second Year
Fall-CSE241, CSE191
Spring-CSE250, calculus-based probability or statistics course (such as
MTH411, STA401, or EAS305)
Third Year
Fall-CSE396, one 200-level MTH or STA course, one science and engineering
sequence course
Spring-CSE341, one 300-level MTH or STA course, one science and engineering
sequence course
Fourth Year
Fall-CSE505, CSE521
Spring-CSE442, 500-level CSE course (but not CSE503, CSE504, or CSE507)
Fifth Year
Fall-CSE573, CSE589
Spring-CSE596, 600-level CSE course
Science and Engineering Sequence
Any two-course science and engineering sequence from biology, chemistry,
geology, physics, or any department in the School of Engineering and Applied
Sciences except the CSE department.
Total required credit hours in computer science - 57
Total required credit hours outside computer science - 28
Refer to the graduate school's policies and procedures manual for master's
candidates requirements.
Prior admission into the CS major and completion of the GMAT exam during
junior year. Application to the School of Management and to this program
during the junior year will be considered in light of requirement of generally
superior performance.
CSE115 Introduction to Computer Science for Majors I
CSE116 Introduction to Computer Science for Majors II
CSE191 Introduction to Discrete Mathematics
CSE241 Digital Systems
CSE250 Algorithms and Data Structures
CSE305 Introduction to Programming Languages
CSE341 Computer Organization
CSE396 Introduction to the Theory of Computation
CSE421 Introduction to Operating Systems
CSE442 Software Engineering
MTH141 College Calculus I
MTH142 College Calculus II
One calculus-based probability/statistics course (e.g., MTH411, STA401,
EAS305)
Two science and engineering sequence courses
MGA604 Financial Analysis and Reporting
MGB601 Behavioral and Organizational Concepts of Management
MGE601 Economics for Managers
MGQ606 Probability and Statistics for Managers
MGM625 Marketing Management
MGF631 Financial Management
MGS630 Operations and Service Management
MGS641 Strategic Management
Ten M.B.A. electives (a maximum of two of these electives may be taken
from another department, such as CSE)
Two flex core courses
Science and Engineering Sequence
Any two-course science and engineering sequence from biology, chemistry,
geology, physics, or any department in the School of Engineering and Applied
Sciences except the CSE department.
See Baccalaureate Degree Requirements (page 254) for general education
and remaining university requirements.
First Year
Fall-CSE115, MTH141
Spring-CSE116, MTH142
Second Year
Fall-CSE191, CSE241, one science and engineering sequence course
Spring-One calculus-based probability/statistics course (e.g., MTH411,
STA401, EAS305), CSE250, one science and engineering sequence course
Third Year
Fall-CSE305, CSE341
Spring-CSE396, CSE421, CSE442
Fourth Year
Fall-MGA604, MGB601, MGE601, MGQ606, one flex core course
Spring-MGM625, MGF631, MGS630, one M.B.A. elective, one flex core course
Fifth Year
Fall-Five M.B.A. electives
Spring-MGS641 Strategic Management, four M.B.A electives
Total required credit hours in computer science - 40
Total required credit hours outside computer science - 80
Contact the School of Management for flex core course and electives options.
Refer to the graduate school's policies and procedures manual for master's
candidates requirements.
Six CSE courses (excluding CSE202, CSE444-446, CSE498-499) with at least
two at the 300 level or above. A minimum overall GPA of 2.5 in those courses
is required. At least three courses must be taken at UB. A maximum of
two courses can also be required 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 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: CSE115, CSE116, CSE191, CSE250, CSE305, CSE442
Hardware track: CSE191, CSE115, CSE116, CSE241, CSE379, CSE380
Questions and Comments about this site should be sent to:
- Academic Affairs
- Phone: (716) 645-6003
- Fax: (716) 645-2549
Last updated: Thursday, 09-Dec-2004 15:21:17 EST
|