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.