Computer Science Course Descriptions
126 Introduction to Computer Science Using the Web (FR)
Introduction to basic UNIX commands, static web pages with HTML tags, and programming using Javascript. HTML topics: physical and content style tags, lists, tables, links, images, forms, and frames. Javascript programming fundamentals: I/O, selection, iteration, functions, objects, and arrays. No prerequisites. Offered each term.
127 Computer Science I (FR)
Introduction to object-oriented programming (with Python) and computer systems. Theoretical concepts: the system life cycle, testing and test plans, documentation and design, number systems, data types and storage, formal grammars (EBNF). Programming topics: selection, iteration, objects, classes methods, arrays and strings. UNIX fundamentals. No prerequisites. Offered each term.
128 Computer Science II
Introduction to data structures. Theoretical topics: ADTs, encapsulation and information hiding, polymorphism, recursion, and algorithm time complexity. Programming topics: Advanced object oriented programming with inheritance, linked lists, stacks, queues, sequential and binary search, and recursive programming. Introduction to program verification. Prerequisite: 127 or 126. Offered each term.
135 Computational Discrete Mathematics I (FR)
Introduction to functional programming and discrete mathematics. Sets, functions, and relations. Basic logic, including formal derivations in propositional and predicate logic. Recursion and mathematical induction. Programming material: Data types and structures, list-processing, functional and recursive programming. No prerequisite. Offered every year.
138 Artificial Intelligence for Non-Majors (FR)
An introduction to logic programming for artificial intelligence applications. Programming topics: facts, rules, and queries; list processing; backtracking and recursion. Possible artificial intelligence topics: parsing and computational semantics; agent-based approaches; problem solving and search methods.Will not count towards the major or minor. Offered every other year.
142 Web for Graphic Design
A studio course exploring visual layout principles of interactive website design. Survey of methodology, theory, and best practice of web design solutions. Projects will explore current technologies.Will not count towards the major or minor. Offered every year.
235 Computational Discrete Mathematics II
Additional concepts in discrete mathematics. Recurrence relations, counting, and combinatorics. Discrete probability. Matrix operations and algorithms. Graphs and trees. Programming with advanced data structures. Prerequisite: CS/Math 135. Offered each fall.
255 Algorithm Design and Analysis
Introduction to procedural programming (with C). Sorting and searching. Advanced data structures. Symbol tables, binary search trees, and hashing. Trees, graphs, and recursion. Prerequisites: 128 and Math 135. Offered each fall.
256 Computer Organization and Architecture
Introduction to computer organization and system architecture. Topics: Boolean algebra, combinational and sequential logic design, fundamental structure of major computer hardware systems (CPU/ALU, memory, cache, registers, I/O), instruction sets, computer arithmetic, pipelining, and memory hierarchy. A two-hour weekly hardware lab is required. Prerequisites: 128 and Math 135. Offered each spring.
314 Database Management Systems
Introduction to relational database. Theoretical concepts include relational algebra and calculus, logical and physical database design, normalization, database security and integrity, data definition and data manipulation languages. Programming topics: database creation, modification, and querying using MySQL and PHP. Prerequisite: 255. Offered in alternate years.
322 Fundamentals of 2-D and 3-D Graphics
Introduction to the fundamentals of computer graphics. Covers topics ranging from 2-D raster graphics to rendering realistic, 3-D images. Theoretical and programming topics: 2-D primitives, geometrical transformations, 3-D modeling (curves, surfaces, and solids), light and color, and rendering (visible surface determination, illumination and shading). Prerequisites: 255 and Math 235. Offered as needed.
328 Weaving Arachne’s NewWeb
An introduction to web-based software development. Theoretical concepts include design and testing of user-interfaces, server-side programming and computer security, form verification, and pattern-matching. Programming exercises include the development of projects using HTML, JavaScript and Perl. Prerequisite: 255. Offered in alternate years.
330 Computer Networking
Introduction to computer networking. It covers basic concepts, principles and technologies in computer networking. It focuses on the Internet, its nuts and bolts, as well as the principles that govern how and why it works. Many advanced topics are also covered :Wireless Network and Network Management etc. Prerequisite: 255. Offered as needed.
336 Network Security
Introduces many areas of network security, such as encryption basics, authentication, Email security, IP security, WEB security and system security, etc. The objective of this course is to provide students with a comprehensive overview of the threats to network security, technologies for network security assurance and practical approaches to security solutions. Prerequisite: 255. Offered as needed.
338 Artificial Intelligence
Introduction to fundamental issues and techniques of AI. Topics: search algorithms, knowledge representation, automated reasoning, expert systems, machine learning (decision tree, artificial neural networks, Bayesian inference, and clustering). Prerequisite: 255. Offered in alternate years.
355 Programming Languages
Comparative analysis of programming languages. Theoretical topics: taxonomy and history of programming languages, parsing, garbage collection/resource management. Language design: elementary and structured data types, control structures, subprogram control. Programming topics: the development of programs in several language families: procedural, functional, logic, scripting. Prerequisite: 255. Offered in alternate years.
356 Operating Systems (W)
Introduction to fundamental issues and techniques of operating system design. Topics: processes and threads, process scheduling, deadlock, memory management, I/O systems, file management. Optional topics: multimedia and distributed operating systems, security, and parallel operating systems. Prerequisites: 255 and 256. Offered in alternate years.
357 Models of Computing (W)
Theoretical foundations of computing. Automata, grammars, decidability and complexity. Computability and logic: undecidability and incompleteness. Automata theoretic approaches to decision problems in logic. Prerequisite: 255 or CS/Math/Phil 360. Offered in alternate years.
360 Topics in Logic (Cross-listed as Math 360 and Phil 360)
Investigation of topics in formal logic. Covers soundness, completeness, and undecidability of classical predicate logic. Additional topics might include incompleteness, non-classical logics (e.g., modal, intuitionistic, many valued), computer implementations, and logic programming. Students will complete a final project relative to the rubric (Computer Science, Mathematics, Philosophy) chosen at registration. Prerequisite: 255. Offered in alternate years.
362 Computer Vision
Computer Vision begins with a brief introduction to vision systems and then progresses through a variety of techniques useful in computer vision. Topics and techniques may include image input, data structures for images, enhancement/ corrections, edge detection, segmentation, higher level representations, recognition (trained and untrained), labeling and 3D vision. Prerequisite: 255. Offered as needed.
365 Computational Linguistics
Computational linguistics is concerned with the computational analysis of natural language that should lead to computers “understanding” natural languages. Topics include the implementation of grammars, a comparative analysis of parsing algorithms, and unification based approaches to grammars. Optional topics include computational morphology, computational semantics, and statistical approaches to natural language processing. Prerequisite: 255. Offered as needed.
367 Robotics
Introduction to the fundamentals of robot design and application. Topics: robot kinematics and control, architecture, sensors, vision, speech, motion planning and learning. Prerequisite: 255. Offered in alternate years. 370 Special Topics In-depth examination of selected areas within computer science not currently offered in the curriculum.May be repeated for credit if course content is not duplicated. Prerequisite: 255. Offered as needed.
397 Internship
This non-credit course is offered by arrangement with the department head. Application must be made at the beginning of the semester prior to the internship. Prerequisites: 255, 256 and at least one upper-level course. Offered each term.
428 Advanced Web Development
An advanced course on web-based software development in Java. This course extends the theoretical concepts introduced in CS 328. Programming exercises include layout designs, graphics applications, processing keyboard and mouse events, advanced form handling, and Swing-based applets. Students are expected to complete a large-scale, web-based application in Java. Prerequisites: 355 or 328. Offered in alternate years.
440 Compiler Construction
Study of the techniques for translating high-level programming languages into executable machine code or byte code: lexical analysis, syntactic analysis, contextual analysis, and code generation. Comparison between compilation and interpretation as approaches to programming language implementation. Optional topics include: garbage collection, polymorphic type checking, optimization, implementation of virtual machines. Prerequisites: 256 and 355. Offered as needed.
498 Directed Study
Individual directed readings on a topic of interest to the student. This course is a preparation for CS 499 (Research/Thesis). The course requires a significant review of the literature that culminates in a committee-reviewed manuscript. This course does not count toward the computer science major or minor. Open only to CS majors with a cumulative GPA of 3.50 or higher in CS. Prerequisites: Two upper-level courses in CS. Requires permission of department head and faculty research advisor. Offered each term.
499 Research/Thesis
Opportunity to pursue directed or independent study of a specialized topic.Work is expected to culminate in a committee-reviewed paper. Students enrolled in this course must present their paper at a student research conference, a professional meeting, or it must be accepted for publication in a committee approved journal. This course does not count toward the computer science minor. Open only to CS majors with a cumulative GPA of 3.50 or higher in CS. Prerequisites: 498 and three upper-level courses in CS. Requires permission of department head and thesis advisor. Offered each term