Computer Science Faculty Major in Computer Science, B.S.

advertisement
Computer Science
Please Note:
Highlighting indicates substantive updates for the 20152016 academic year. Pagination may differ from the
2014-2016 printed copy of the catalog.
Updates are effective July 1, 2015.
Faculty
Steve Waters, chair; Wayne Buckhanan, Alex Noguchi
Departmental Office: 238 Chan Shun Hall; 965-7269
Degrees and Programs
Computer Science, B.S. .........................................................79
Software Development, A.S. .................................................80
Computer Science, Minor .................................................... 80
Computer Scienceis the study of solving problems with
the aid of computers. It deals with the design of algorithms
(i.e., effective procedures) for the solution of problems, with
the structures of languages for the efficient expression of these
algorithms, and with computer systems, both hardware and
software, for implementing these languages.
Two degree options are offered. The B.S. in Computer
Science is designed to prepare the student for graduate study
in computer science or for a career in scientific computation
or software development. The A.S. in Software Development
provides a strong foundation in programming and software
design that enables students to enter the workforce, or pursue a
baccalaureate degree in computer science or another field. The
department also offers a minor in computer science.
Major in Computer Science, B.S.
A minimum of 77 hours (39 upper-division hours)

Required
CPTR 115
CPTR 125
CPTR 131
CPTR 232
CPTR 247
CPTR 256
CPTR 324
CPTR 326
CPTR 346
CPTR 357
CPTR 396
CPTR 398
CPTR 399
CPTR 447
CPTR 455
CPTR 466
INFS 380
INFS 465
Core Courses (56 hours):
Introduction to Computer Programming 4
Objects & Frameworks
4
Survey of Computer Science
4
Data Structures and Algorithms I
3
Database Programming
3
Software Engineering
3
Assembly Programming 3
Computer Languages 4
Data Structures and Algorithms II
3
Computer Architecture 4
Seminar (2 quarters) .5+.5
Individual Programming Language
2
Team Software Project
3
Operating Systems 3
Theory of Computation
3
Senior Project
3
Database Analysis and Design
3
Fundamentals of Data Communication 3

Required
Core Electives (5 hours):
At least 5 hours from the following:5
Any CPTR courses (except CPTR 105)
MATH 265 Elementary Linear Algebra (4)
MATH 331 Probability Theory (3)
MATH 332
Mathematical Statistics (3)
MATH 351+352 Introduction to Abstract Algebra I+II (3+3)
MATH 354 Number Theory (3)
MATH 375 Numerical Analysis (4)

Required
Cognate Courses (16 hours):
MATH 131+132
Calculus I,II
MATH 275
Logic and Sets
MATH 355
Combinatorics
4+4
4
4
79
Computer Science
Minor in Computer Science
Recommended Cognate Courses:
MATH 133
Calculus III (4)
OFAD 111
Personal/Beginning Keyboarding (2)
PHYS 211+212+213 Physics with Calculus (4+4+4)
A minimum of 27 hours (6 upper-division hours)

Required
CPTR 232
This curriculum follows the guidelines of the ACM (Association for Computing Machinery).

Required
Major in Software Development, A.S.
A minimum of 42 hours

Required
CPTR 115
CPTR 125
CPTR 131
CPTR 232
CPTR 247
CPTR 248
CPTR 249
CPTR 256
CPTR 398
CPTR 399
Core Courses (34 hours):
Intro to Computer Programming
Objects & Frameworks
Survey of Computer Science
Data Structures and Algorithms I
Database Programming
Internet Programming
Mobile Application Development
Software Engineering
Individual Programming Language
Team Software Project
Cognate Courses (8-9 hours):
ENGL 102
College English
4
4
4
3
3
3
3
3
4
3

Required
4
At least one of the following courses:4-5
MATH 106
College Algebra (4)
MATH 130
PreCalculus (5)
MATH 131
Calculus I (4)
Recommended Cognate Course:
OFAD 111
Personal/Beginning Keyboarding (2)
80
Course (3 hours):
Data Structures & Algorithms
4
Electives (24 hours):
At least 24 hours from the following (6 upper-division):24
Any CPTR courses (except CPTR 105)
MATH 265
Elementary Linear Algebra (4)
MATH 275
Logic and Sets (4)
MATH 331 Probability Theory (3)
MATH 351+352 Introduction to Abstract Algebra I,II (3+3)
MATH 355 Combinatorics (4)
MATH 375 Numerical Analysis (4)
Computer Science
CPTR 131
Survey of Computer Science
Computer Science
Service Course:
(Not applicable to a major or minor in
this department)
CPTR 105 Introduction to Computers
3F
For the liberal arts student; introductory exploration of the principles of
computing and the function, history, and
use of computers. No prerequisites, but
a knowledge of mathematics equivalent
to high-school algebra is assumed. Two
lectures and one laboratory per week.
Lower-Division Courses:
CPTR 115
Introduction to Computer
Programming
4 F, W
Introduction to the principles necessary for writing clear, well-designed
and efficient computer programs. Three
lectures and one laboratory per week. No
prerequisites, but a knowledge of mathematics equivalent to high-school algebra
is assumed.
CPTR 125
Objects & Frameworks
4W
Design, implementation, and maintenance of software using object-oriented
programming languages (both the “classics” and current languages such as
Java, C#, Python, and Ruby). Use of OO
frameworks, and tools in various application domains. Includes basic UML.
Three lectures and one laboratory per
week. Prerequisite: CPTR 115.
4S
Overview of the main topics that
make up the field of computer science,
including computer architecture, operating systems, algorithms, programming
languages, software engineering, data
structures, databases, artificial intelligence, and theory of computation. Three
lectures and one laboratory per week.
Prerequisites: CPTR 125, MATH 106
CPTR 232
3F
Data Structures and Algorithms I
Topics include: Abstract data types,
lists, stacks, queues, trees, sets, recursion, heaps, priority queues, graphs, and
algorithms for sorting and searching.
Two lectures and one laboratory per
week. Prerequisite: CPTR 131
CPTR 247 Database Programming
3F
Development of database systems
that organize large amounts of data and
facilitate searching, summarizing, and
reporting on that data. Programming
languages, frameworks and tools used to
describe and interface with flat-file, relational, object, and legacy database systems, including SQL, UML, and ORM
tools. Two lectures and one lab per week.
Prerequisite: CPTR 125.
CPTR 248 Internet Programming
3W
Server- and client-side programming
using sockets. Development of web applications using HTML5, CSS3, JavaScript,
various server-side languages and technologies, and current frameworks. Tools
and techniques for collaborating with
other professionals on large projects.
Accessing databases, cloud services, and
enterprise/legacy systems from web apps.
Prerequisite: CPTR 247. Corequisite:
CPTR 398.
CPTR 249
3S
Mobile Application Development
Programming for current mobile
platforms (smartphones and tablets).
Introduction to the languages,
frameworks, and tools used by these
platforms, user interface design,
data handling, and app distribution.
Repeatable for credit under different
subtitles, such as the following:
iOS
Android
Two lectures and one laboratory per
week. Prerequisite: CPTR 248.
CPTR 256
Software Engineering
3W
Principles of organization and execution of large-scale, multi-person software
projects, including issues in managing
and organizing people, tools and language features available to aid this process, classical and agile methodologies,
and ethics in the software area. Two lectures and one lab per week. Prerequisites:
CPTR 125, COMM 105.
Upper-Division Courses:
CPTR 324
Assembly Programming
3W
Techniques of assembly language programming for various processors; lowlevel program interaction with embedded
systems and with the operating
system. Emphasis on low-level data manipulation and implementation of
structured programming forms in assembly language. Two lectures and one
laboratory per week. Prerequisite: CPTR
232. Even years.
81
Computer Science
CPTR 326 Computer Languages
4F
Principles underlying the design of
programming languages using examples
from different language paradigms.
Topics include syntax, semantics, types,
scope, and parameters. Prerequisites:
CPTR 232. Odd years.
the selected language. Languages suitable for this course include, but are not
limited to: Clojure, Erlang, Factor, Forth,
Haskell, Joy, Lisp/Scheme, Prolog, Perl,
PHP, Racket, Ruby, Scala, and Smalltalk. Repeatable for credit. Prerequisites:
CPTR 131 and permission of the instructor.
CPTR 346 3S
Data Structures and Algorithms II
CPTR 399
Team Software Project
An advanced look at data structures
and algorithms. Topics include asymptotic analysis, recurrences, sorts, balanced
trees, dynamic programming, spanning
trees, shortest-paths, networks, string
matching, and NP-completeness. Prerequisites: CPTR 455, MATH 275, 355.
Odd years.
Application of software engineering
concepts to the completion of a significant software development effort in collaboration with other developers. Focus
on teamwork and agile methodologies.
The modification of a large software
system or the creation of a smaller one is
undertaken by the class as a whole. One
lecture and two laboratories per week.
Prerequisites: CPTR 256, CPTR 398.
CPTR 357 Computer Architecture
4F
Elements of digital computer organization. Implementation of combinational
logic, gates, decoding, and arithmetic
functions. Storage of information, registers, and memory; addressing modes, the
ALU, clocking, and control; input/output
interrupts, and DMA. Three lectures and
one laboratory per week. Prerequisite:
CPTR 232. Even years.
CPTR 447 Operating Systems
CPTR 396 Computer Science Seminar
CPTR 455
Theory of Computation
.5 S
Topics of current interest in computing
are presented and discussed. Repeatable
to a maximum of 1 credit. Graded S/F.
CPTR 398
Individual Programming
Language Study
1-3 F, W, S
Supervised individual study of a
particular programming language not
normally taught in an existing course.
The study typically consists of developing solutions to a series of programming
problems that are then implemented in
82
3S
3S
Multiprogramming and time-sharing
system-design principles. Topics include
processes and process communication,
control of input-output, memory management, scheduling, file systems, protection, and resource allocation. Prerequisites: CPTR 232, 324. Even years.
3W
Theoretical models of computation.
Topics include: grammars, languages,
automata, the Church-Turing thesis, and
computability. Prerequisite: CPTR 326,
MATH 275, 355. Odd years.
CPTR 466
Senior Project
3S
An independent project arranged in
consultation with the computer science
faculty. Ideally there will be several
students, perhaps from multiple departments, working on different aspects of
the project. Designed to demonstrate
competence in computer science.
Requires a public presentation of the
project. Prerequisite: Permission of the
instructor.
CPTR 485 1-4, Arranged
Special Topics in Computer Science
Study of a selected topic not covered
elsewhere in the curriculum. Course content varies from year to year, reflecting
current interest. Potential topics include
computer graphics, formal methods, artificial intelligence, compilers, and parallel
programming. Repeatable for credit.
CPTR 494 1-3 F, W, S, Su
Computer Science Internship
Supervised work experience in a computer science-related field. Skills in the
application of computer science principles are used. Enrollment limited to
department majors. Advanced approval
of the department is required. May not
be taken before the end of the sophomore
year. Prerequisite: CPTR
. Qualifies
for IP grading. Graded S/F.
CPTR 495 Independent Study
1-3 Arranged
With the approval of the department
chair, qualified students majoring in
computer science may undertake independent study of a problem suited to
their background and experience. Repeatable to a maximum of 3 credits.
Download