# Computer Science (CSCI)

**101 Introduction to Computer Science** (3) A first course in computer science providing a survey of current topics as well as core programming and related problems solving skills. Satisfies the mathematics requirement for General Education. Students should have an acceptable score on the Mathematics Placement Test or have completed an appropriate remedial course. Cross-listed as LIBS 101. MATH 095 is recommended. F10, S11, F11, S12

**110 Introduction to Computer Programming I** (2) Self-paced independent study in the fundamentals of computer programming. Each student may choose from several languages of current interest that are not offered in other courses. Students complete several programming exercises and projects. Prerequisite: Independent study contract. Offered as needed.

**111 Introduction to Computer Programming II** (2) Self-paced independent study of intermediate-level computer programming. Each student may choose from several languages of current interest that are offered in other courses. Students complete several programming exercises and projects. Prerequisites: Independent study contract. Offered as needed.

**170 Programming and Technology for the Teaching of Mathematics** (3) Graphing and analysis of functions using graphing calculators, structured programming, use of software packages such as Maple and Geometer's Sketchpad. Prerequisite: Acceptable score on the Mathematics Placement Test or completion of MATH 115 with a grade of at least C-. Lecture and lab. S11

**201 Introduction to Programming** (3) A first programming course for students with a serious interest in computing. Topics include: formal languages; data types and variables; control structures; primitive and reference data types; methods and modular programming; introduction to abstract data types and classes; simple algorithms; and programming conventions and style. Satisfies the mathematics requirement for General Education. Prerequisite: Acceptable score on the Mathematics Placement Test or completion of an appropriate course. MATH 102 recommended. Lecture and lab. F10, S11, F11, S12

**202 Object-Oriented Programming** (3) Continuation of CSCI 201. Programming course emphasizing the methodology of programming from an object-oriented perspective and software engineering principles. Topics include: data structure fundamentals; abstraction and encapsulation; inheritance; pointer and reference variables; memory management, operator overloading, recursion; various important algorithms; and file processing techniques. Prerequisite: CSCI 201 with a grade of C- or better. Lecture and lab. S11, S12

**250 Internet Programming** (3) Internet technologies for the World Wide Web such as XHTML, DHTML, CSS, CGI, JavaScript, Java, and Serlets. Topics include: converting HTML into XHTML/XML; page layout control with cascading style sheets, form processing and validation, working with images and JavaScript based animation, fundamentals of CGI programming under UInix/Linux environment, server-side programming with Perl and/or Unix shell; server configuration issues; working with multimedia objects; Java applets; and database access. Prerequisite: Acceptable score on the Mathematics Placement Test or completion of an appropriate course. MATH 102, CSCI 201 recommended. Lecture and lab. F11

**303/503 Algorithms and Data Structures** (4) Continuation of CSCI 202. Concepts and techniques for various algorithms and related data structures of particular interest to computer scientists. Emphasis on proper implementation of abstract data types and analysis of the complexity of algorithms. Topics include: stacks and queues, hashing, graphs and trees, data compression, game strategy, and related algorithms. Prerequisite: CSCI 202 with grade of C- or better. F10, F11

32**0/520 Discrete Structures** (4) Continuation of MATH 310. Investigation of concepts of noncalculus mathematics used in computer science, operations research and other areas of applied mathematics. Topics include: relations and functions, recurrence relations, combinatorics, graph theory, and related algorithms. Cross-listed as MATH 320/520. F10, F11

**324/524 Assembly Language Programming** (4) Fundamentals of Assembly language programming under DOS, Windows, and Linux operating systems. Topics include: data representation and fundamentals of computer architecture; memory access and organization; arithmetic and logical operations; functions and procedures, bit and string manipulation; pattern matching, computer graphics, interrupt handling and combining assembler with high-level languages. Prerequisite: acceptable score on the Mathematics Placement Test or completion of an appropriate course. MATH 102 recommended. Lecture and Lab. S11, S12

**331/531 Computer Graphics and 3D Modeling** (3) Data structures and algorithms used in computer graphics emphasizing programming rather than graphics design. Topics include: graphics algorithms, design and implementation of graphics applications, 2-D and 3-D modeling, and animation. Mathematical treatment of topics require an understanding of fundamental concepts in calculus and matrix algebra. Prerequisite: CSCI 201. Lecture and lab. Offered as needed. Offered as needed.

**340 Software Development and Professional Practice** (4) Best practices in the field of software development. Students complete a medium- scale software project as members of a development team. Topics include: professional ethics and responsibilities; multi-tier systems; software life cycle; requirements analysis; system modeling; implementation and testing; re-engineering and maintainability, Secure coding, system security, and risk management techniques are integrated into all facets of the development process. Prerequisite CSCI 303. F10, F11

**356/556 Information Management and Security** (3) Information Management (IM) plays a critical role in almost all areas where computers are used. The course discusses the representation, organization, transformation, and presentation of information, algorithms for efficient and effective access and updating of stored information, data modeling and abstraction; information security, privacy, integrity, and protection in a shared environment. Prerequisite: CSCI 201 recommended. S12

**381 Special Projects** (1-4) Various individual and small-group projects carried out under the supervision of one or more instructors. Requires weekly progress reports plus a final report and/or a final exam. May be repeated, but no more than a total of four credits may be earned from both MATH 381 and CSCI 381. Pass-Fail only. Prerequisites: Preliminary project plan and an independent study contract. Offered as needed.

**390 Mathematical Sciences Internship** (1-4) Work in an approved positionto gain experience in solving real problems using computer science, mathematics, and statistics. Interns may receive salaried appointments with cooperating companies. Credits do not apply to any major or minor in Mathematics and Computer Science. Pass-Fail only. Prerequisite: Department approval. Offered as needed.

**399 Mathematical Sciences Seminar** (1) Students carry out individual investigations in current literature and present their findings to the entire department. Taken during senior year. Pass-Fail only. Prerequisite: Independent study contract. F10, S11, F11, S12

**401/601 Formal Models for Computer Security** (4) Survey of formal mathematical models for computer security with in-depth examination of important features and characteristics. Includes an investigation of mathematical properties of these models as well as related cryptographic and system implementations. The models include classical lattice-based models as well as modern policy-based models such as the Bell-LaPadula model, no interference models, hybrid models, integrity models, and miscellaneous formal verification techniques. Prerequisite: MATH 310, CSCI 270. Offered as needed.

**410/610 Programming Language Principles** (4) Survey of programming languages of current interest with in-depth examination of important features and characteristics. Includes an investigation of fundamental programming language concepts and design issues related to the procedural, functional, and object-oriented paradigms. Students conduct programming exercises to discover and experiment with features of several languages and to implement interpreters and compilers for simple languages of their own design. Prerequisite: CSCI 303. Offered as needed.

**421/621 Theory of Computation** (4) Thorough introduction to automata, formal languages and compatibility. Topics include: models of computation; regular and context-free languages; finite and pushdown automata; Turing machines; unsolvable decision problems; and fundamentals of computational complexity. Cross-listed as MATH 421/621. Prerequisites: CSCI 320. F11

**425/625 Algorithm Design and Analysis** (4) Study of the design and analysis of algorithms that are based on elementary data structures such as queues, stacks and trees. Some graph and network algorithms (shortest paths, connectivity, coloring, flows, matchings), geometric algorithms (convex hulls, range search, nearest neighbors), NP-complexity, approximation algorithms (vertex cover, traveling salesman, scheduling), and introduction to randomized algorithms. Introduction to algorithm design techniques, including greedy algorithms, divide-and-conquer, and dynamic programming. Lower and upper bounds of program complexity are analyzed. Introduction to algorithms used in the area of information security. Cross-listed as MATH 425/625. Prerequisites: CSCI 320. CSCI 202 recommended. F10

**437/637 Cryptography** (4) Study of the theory of cryptography together with applied programming projects. Topics include: discrete probability spaces; Shannon's theory of information and perfect secrecy; classical cryptosystems and cryptanalysis; authentication and key exchange; public key cryptosystems; elementary number theory, primality checking, the RSA cryptosystem; and Advanced Encryption Standard (AES). Cross-listed as MATH 437. Prerequisite: CSCI 201, MATH 310. S11

**451/651 Operating Systems and System Security** (4) In-depth study of the concepts, issues, and algorithms related to the design and implementation of operating systems. Topics include: process management, process synchronization and interprocess communication; memory management; virtual memory; interrupt handling; processor scheduling; device management; I/O; file systems; and introduction to networking and network security. Students conduct programming projects and case studies to investigate modern operating systems such as Solaris, Linux, and Windows. Prerequisite: CSCI 201. F10

**461/661 Computer Architecture and Organization** (4) In-depth study of fundamentals of computer hardware organization. Topics include: digital logic and circuits; finite state machines; computer arithmetic, machine instructions and assembly language; memory management and design; storage system design;, I/O modules, operating system support; structure and function of computer processors, RISC vs. CISC architecture, microprogrammed control, and computer security. Prerequisite: CSCI 324. S11

**470 Net-centric Computing and Network Security** (4) Introduces the structure, implementation, and theoretical and underpinnings of computer networking and the applications that have been enabled by that technology. Introduction to network security. Prerequisite: CSCI 201. F11

**475/675 Numerical Analysis** (4) Study of theory and applications of computational techniques for mathematical solutions emphasizing rapid approximation and error analysis. Topics include: solution to equations in one variable; polynomial approximations to functions; error analysis; numerical solutions to ordinary differential equations; boundary value problems. Cross-listed as MATH 475/675. Prerequisite: MATH 242. Offered as needed.

**481/681 Special Topics** (1-4) Investigation of one or more topics of current interest not covered in other courses. Not intended for independent study projects. May be repeated, but no more than a total of eight credits may be earned from both MATH 481 and CSCI 481. Prerequisite: Consent of instructor. Offered as needed.

**499 Capstone Project** (1-3) Group projects are carried out by students under supervision of a faculty member. Prerequisite: CSCI 340 and independent learning contract. S11, S12