Undergraduate Computer Science Courses
CSCI 012. Understanding and Using Personal Computers.
2 lec., 2 lab. hr.; 3 cr.
Prereq.: Two and one-half years of high school mathematics, including intermediate algebra, or MATH 006 or 008 (or equivalent).
Hands-on introduction to computers, computation, and the basics of computer hardware and software. Students will have experience during the instructed microcomputer lab with a number of software environments including an operating system, a word processor, a spreadsheet, and a database package. The course will focus on problemsolving and programming within the context of these packages. In addition, students will acquire the skills needed to learn other software packages on their own. Not open for credit to students who have taken CSCI 018. (SQ)
Sample class web pages:
CSCI 018. Computers with Business Applications.
2 lec., 2 lab. hr.; 3 cr.
Prereq.: Admission to the Business and Liberal Arts minor or the Business Administration major.
Fundamentals of using the operating system and application software. Business-oriented uses of software applications including: word processing, spreadsheets, presentations, and database management. Emphasis on realistic situations and problem-solving strategies used in business. An important part of the course is a research project/presentation of topics involving current issues arising from the use of computer technology in a business environment. Some sections will be limited to those admitted to the major in business administration, and others will be limited to those admitted to the minor in Business and Liberal Arts (BALA). (SQ)
CSCI 080. Problem Solving with Computers.
2 lec., 2 lab hr.; 3 cr.
Prereq.: CSCI 012.
An introduction to computer science through problem solving, focusing on the methodology of problem solving rather than specific hardware or software tools. Students will learn how to select and use specific software tools advantageously. Lab exercises will exemplify the problem-solving methodology. (SQ)
Sample class web pages:
CSCI 081. HTML and WWW Programming.
3 hr.; 3 cr.
Prereq.: CSCI 080.
Introduction to computer networks from a user's perspective and the World Wide. The course will provide hands-on experience with electronic mail, file transfer, Telnet, and Web browsers, including the creation of Web pages using HTML, JavaScript, and CGI scripts; image preparation and editing; scanning and OCR.
Sample class web pages:
CSCI 082. Multimedia Fundamentals and Applications.
3 hr.; 3 cr.
Prereq.: CSCI 080.
A comprehensive introduction to the fundamental concepts, techniques, and tools that underlie the use of multimedia in scientific and business applications. Major topics include the principles of image, sound, and video synthesis; software and industry standards; and typical applications.
Sample class web pages:
CSCI 084. Models of Computation.
3 hr.; 3 cr.
Prereq.: MATH 122.
This course is intended to develop the ability to solve problems using differing models of computation. It will develop reasoning ability by creating a computing environment with very few rules which will then be used to develop algorithms within the scope of the model of computation. These environments will be models of actual computing environments. The nature of what an algorithm is will be developed.
CSCI 085. Database Application Programming.
3 hr.; 3 cr.
Prereq.: CSCI 080.
A continuation of CSCI 080. Students will learn to program databases using SQL. Microsoft Access integrated with Visual Basic. In addition, object-oriented database programming such as Oracle and Jasmine will be covered.
CSCI 086. Science, Computing Tools, and Instrumentation.
4 hr.; 3 cr.
Prereq.: MATH 122.
Science and society; principles for scientific exploration; scientific visualization and mathematical analysis: concepts and techniques; computing tools for visualization and computational analysis; Internet tools for science exploration; concept of integrated computing environment for scientific study and collaboration; PC-instrumentation. Applications to social science, biochemistry, psychology, physical, chemical, and earth science. (SQ)
CSCI 088. Advanced Productivity Tools for Business.
4 hr.; 3 cr.
Prereq.: CSCI 012
Advanced training to extend the students' knowledge of widely used office productivity enhancement tools to "expert level" in such areas as word processing, spreadsheet, database, presentation graphics, and electronic messaging. For each of the software packages the course covers: formatting data and content, organizing and analyzing content, formatting documents, collaboration tools, and customization via menus, macros, and specialized settings. Projects are taken from business as well as scientific applications. Students who master the material in this course should be able to pass industry standard examinations for advanced certification, such as Microsoft Certified Office Specialist. (SQ)
(This course was formerly known as: CS90.3 Topics in Computing: Advanced MS Office.)
CSCI 090. Topics in Computing.
CSCI 090.1, 1 hr.; 1 cr.
CSCI 090.2, 2 hr.; 2 cr.
CSCI 090.3, 3 hr.; 3 cr.
Topics in computer programming and applications at a level appropriate for students who are not majoring in computer science. Topics and prerequisites will be announced at registration time. The course may be repeated for credit providing the topic is different, and may not be applied toward the major in computer science.
CSCI 111. Introduction to Algorithmic Problem- Solving.
2 lec., 2 lab. hr.; 3 cr.
Prereq. or coreq.: MATH 120 or 151 or equivalent.
Introduction to the principles and practice of programming. Topics include primitive data types; concepts of object, class, and method; control structures; arrays; procedures and functions; parameter passing; scope and lifetime of variables; input and output; documentation.
CSCI 211. Object-Oriented Programming in C++.
2 lec., 2 lab hr.; 3 cr.
Prereq.: CSCI 111.
Object-oriented algorithmic problem solving in C++, with attention to general as well as language-specific issues including pointer and pointer arithmetic; linked lists; memory management; recursion; operator overloading; inheritance and polymorphism; stream and file I/O; exception handling; templates and STL; applications of simple data structures; testing and debugging techniques.
CSCI 212. Object-Oriented Programming in Java.
2 lec., 2 lab hr.; 3 cr.
Prereq.: CSCI 111.
Object-oriented algorithmic problem solving in Java, with attention to general as well as language-specific issues including applications, event-driven programming; elements of graphical user interfaces (GUIs); linked lists; recursion; inheritance and polymorphism; file I/O; exception handling; packages; applications of simple data structures; applets; concept of multithreading; testing and debugging.
CSCI 220. Discrete Structures.
3 lec. hr.; 3 cr.
Prereq.: MATH 120 and 151 or 141; CSCI 111.
Algorithms, recursion, recurrences, asymptotics, relations, graphs and trees, applications. (SQ)
CSCI 240. Computer Organization and Assembly Language.
3 lec., 1 lab. hr.; 3 cr.
Prereq.: CSCI 111.
Principles of computer design and implementation. Instruction set architecture and register-transfer level execution; storage formats; binary data encoding; bus structures; assembly language programming. (SQ)
Sample class web pages:
CSCI 280. Self-Study Programming.
3 hr.; 1 cr.
Prereq.: CSCI 313.
Self-study and mastery of a programming language or package through reading and practice. Students should consult the department at the beginning of the semester for reading materials and assignments. May be repeated for a maximum of five credits provided the topic is different.
CSCI 310. WWW Programming.
1 hr.; 1 cr.
Prereq.: Permission of the instructor.
Students will learn to do server-side programming for Web pages through hands-on assignments. Topics include the Common Gateway Interface (CGI), UNIX scripts in PERL, Javascript, image manipulation, and text scanning. May not be used as an elective for the computer science major.
CSCI 313. Data Structures.
3 hr.; 3 cr.
Prereq.: CSCI 211, 212, and 220.
Fundamental data structures and their implementations: stacks, queues, trees (binary and AVL), heaps, graphs, hash tables. Searching and sorting algorithms. Runtime analysis. Examples of problem-solving using greedyalgorithm, divide-and-conquer, and backtracking.( SQ)
Sample class web pages:
CSCI 316. Principles of Programming Languages.
3 lec. hr.; 3 cr.
Prereq.: CSCI 220, 240, 313, and 320.
Principles and implementation of programming languages. Topics include: the procedural, object-oriented, functional, and logic programming paradigms; syntax (BNF, expression grammars, operator precedence and associativity); variables (scope, storage bindings, and lifetime); data types; control structures; function call and return (activation records and parameter passing); formal semantics. Programming assignments.
(This course was formerly known as CSCI 300.)
CSCI 317. Compilers.
3 hr.; 3 cr.
Prereq.: CSCI 316.
Formal definitions of programming languages: introduction to compiler construction including lexical, syntactic, and semantic analysis, code generation, and optimization. Students will implement portions of a compiler for some structured language. (SQ)
CSCI 320. Theory of Computation.
3 hr.; 3 cr.
Prereq.: CSCI 111 and 220.
Finite state machines, regular languages, regular expressions, grammars, context-free languages, pushdown automata, Turing machines, recursive sets, recursively enumerable sets, reductions, Halting problem, diagonalization.
CSCI 323. Design and Analysis of Algorithms.
3 hr.; 3 cr.
Prereq.: CSCI 220 and 313.
Advanced data structures: B-trees, graphs, hash-tables. Problem-solving strategies including divide-and-conquer, backtracking, dynamic programming, and greedy algorithms. Advanced graph algorithms. Time complexity analysis. NP-complete problems. Applications to sorting, searching, strings, graphs. Programming projects. (SQ)
CSCI 331. Database Systems.
3 hr.; 3 cr.
Prereq.: CSCI 220 and 313.
ER modeling; functional dependencies and relational design; file organization and indexing; relational algebra and calculi as query languages; SQL; transactions, concurrency and recovery; query processing. Programming projects.
(This course was formerly known as CSCI 311.)
CSCI 332. Object-Oriented Databases.
3 hr.; 3 cr.
Prereq.: CSCI 331.
Review of basic database components and architecture; comparisons of OO databases with relational databases; modeling languages and methods, data definition languages; schema design methodology; the role of inheritance, object identity, and object sharing in OODBs; file structures and indexes for OODBs; transaction processing; concurrency control and recovery; development of database applications using a commercial OODB system.
CSCI 334. Data Mining and Warehousing.
3 hr.; 3 cr.
Prereq.: MATH 241 and CSCI 313.
Data mining and data warehousing: data warehouse basics; concept of patterns and visualization; information theory; information and statistics linkage; temporal-spatial data; change point detection; statistical association patterns; pattern inference and model discovery; Bayesian networks; pattern ordering inference; selected case study.
CSCI 335. Information Organization and Retrieval.
3 hr.; 3 cr.
Prereq.: CSCI 331.
Concepts of information retrieval: keywords and Boolean retrieval; text processing, automatic indexing, term weighting, similarity measures; retrieval models: vector model, probabilistic model; extended Boolean systems: fuzzy set, p-norm models; linguistic model; extensions and AI techniques: learning and relevance feedback; term dependence; document and term clustering; network approaches; linguistic analysis and knowledge representation. Implementation: inverted files; efficiency issues for largescale systems; integrating database and information retrieval.
CSCI 340. Operating Systems Principles.
3 hr.; 3 cr.
Prereq.: CSCI 220, 240, and 313.
Principles of the design and implementation of operating systems. Concurrency, multithreading, synchronization, CPU scheduling, interrupt handling, deadlocks, memory management, secondary storage management, file systems. Programming projects to illustrate portions of an operating system. (SQ)
CSCI 341. Computer Organization.
3 hr.; 3 cr.
Prereq.: CSCI 141 and 220.
Combinational and sequential logic design including programmable logic devices. Memory organization. Arithmetic unit design. Conventional and microprogrammed control unit design. I/O organization.
CSCI 342. Operating-System Programming.
3 hr.; 3 cr.
A study of the internal structures of a particular operating system such as UNIX, or another chosen by the department. (The operating system to be studied is announced at registration time.) Projects are assigned that involve system calls, use of the I/O and file systems, memory management, and process communication and scheduling. Projects may also involve developing new or replacement modules for the operating system, such as the command interpreter or a device driver. A student may receive credit for this course only once. (SQ)
CSCI 343. Computer Architecture.
3 hr.; 3 cr.
Prereq.: CSCI 240.
Instruction set architectures, including RISC, CISC, stack, and VLIW architectures. The memory hierarchy, including cache design and performance issues, shared memory organizations, and bus structures. Models of parallel computing, including multiprocessors, multicomputers, multivector, SIMD, PRAM, and MIMD architectures. Pipelining models, including clocking and timing, instruction pipeline design, arithmetic pipeline design, and superscalar pipelining. (SQ)
Sample class web pages:
CSCI 344. Distributed Systems.
3 lec., 1 lab. hr.; 3 cr.
Prereq.: CSCI 340.
Issues in the implementation of computer systems using multiple processors linked through a communication network. Communication in distributed systems including layered protocols and the client-server model; synchronization of distributed processes and process threads.
(This course was formerly known as CSCI 350.)
CSCI 345. Logic Design Lab.
2 lec., 3 lab. hr.; 3 cr.
Prereq.: CSCI 340.
Design principles and laboratory implementation of logical devices from flip-flops to peripheral interfaces.
Sample class web pages:
CSCI 348. Data Communications.
3 hr.; 3 cr.
Prereq.: CSCI 343.
Computer communications and networks; carriers, media, interfaces (RS 232, RS 422, CCITT); circuit types, data codes, synchronous and asynchronous transmission; protocols (OSI, TCP/IP); modems, multiplexors, and other network hardware; error correction and encryption; voice and data switching: local area networks, ISDN, packet switching; issues in the architecture, design, and management of networks. (SQ)
CSCI 352. Cryptography.
3 hr.; 3 cr.
Prereq.: CSCI 313.
An introduction to cryptographic practices, concepts, and protocols. Topics include the mathematical foundations for cryptography, public key methods (e.g., RSA and El Gamal), block ciphers (e.g., DES and Rijndael), key agreement architectures (Diffie-Hellman), linear feedback shift registers and stream ciphers (e.g., A5 for GSM encryption), signatures and hash functions, (pseudo) random number generators, and how to break the ENIGMA machine.
CSCI 355. Internet and Web Technologies.
3 hr.; 3 cr.
Prereq.: CSCI 313.
Internet protocol stack, analysis of representative protocols; Internet applications: client-server architecture, popular Internet application protocols, Internet application design, client side programming, server side programming, Web application and Web site design; programming projects.
CSCI 361. Numerical Methods.
3 hr.; 3 cr.
Prereq.: CSCI 211 and MATH 201.
Numerical methods and efficient computation, approximation, and interpolation. Computer solution of systems of algebraic and ordinary differential equations.
CSCI 363. Artificial Intelligence.
3 hr.; 3 cr.
Prereq.: CSCI 316.
Principles of artificial intelligence. Topics include logic and deduction; resolution theorem proving; space search and game playing; language parsing; image understanding; machine learning and expert systems. Programming projects in LISP, PROLOG, or related languages. (SQ)
CSCI 368. Computer Graphics.
3 hr.; 3 cr.
Prereq.: CSCI 220 and 313.
Introduction to the hardware and software components of graphics systems, representations of 2D and 3D primitives, geometric and viewing transformations, techniques for interaction, color models and shading methods, algorithms for clipping, hidden surface removal, and scan-conversion. Programming projects using a graphics API to demonstrate the process of computerized image synthesis. (SQ)
(This course was formerly known as CSCI 318.)
CSCI 370. Software Engineering.
4 lec., 1 lab. hr.; 3 cr.
Prereq.: CSCI 220 and 313.
Principles of software engineering including the software life cycle, reliability, maintenance, requirements and specifications, design, implementation, and testing. Oral and written presentations of the software design. Implementation of a large programming project using currently-available software engineering tools.
CSCI 381. Special Topics in Computer Science.
CSCI 381.1-381.4, 1-4 hr.; 1-4 cr.
Prereq.: Permission of the department.
Fall, Spring.
No more than 3 credits of CSCI 391-399, excluding 398, may be used as an elective for the computer science major or minor.
CSCI 391. Honors Problems in Computer Science.
CSCI 391.1-391.3, 1-3 hr.; 1-3 cr. Prereq.: Permission of the department.
Open to students majoring in computer science who, in the opinion of the department, are capable of carrying out the work of the course. Each student works on a research problem under the supervision of a member of the faculty. Fall, Spring.
CSCI 393. Honors Thesis.
3 hr.; 3 cr.
Prereq.: Junior or senior standing and approval of the department's Honors and Awards Committee.
The student will engage in significant research under the supervision of a faculty mentor and a thesis committee consisting of two other faculty members. The thesis proposal and committee must be approved by the department's Honors and Awards Committee. Upon completion of the research paper, an oral presentation of the results, open to the public, will be given. With the approval of the mentor, thesis committee, and the department's Honors and Awards Committee, the course may be repeated once for credit when the level of the student's work warrants a full year of effort.
CSCI 395. Research Projects.
CSCI 395.1-395.3, 1-3 hr.; 1-3 cr.
Prereq.: Permission of the department.
Open to majors and nonmajors who, in the opinion of the department, are capable of carrying out an independent project of mutual interest under the supervision of a member of the faculty.
CSCI 398. Internship.
CSCI 398.1, 45 hr.; 1 cr.,
CSCI 398.2, 90 hr.; 2 cr.,
CSCI 398.3, 135 hr.; 3 cr.
Prereq.: Completion of 15 credits in computer science and approval of the department.
Computer science students are given an opportunity to work and learn for credit. Students should consult the college's Office of Career Development and Internships for listings of available internships and procedures for applying. A proposal must be approved by the department before registration. The student's grade will be based on both the employer's and faculty sponsor's evaluations of the student's performance, based on midterm and final reports. A limit of 6 credits of internships may be taken. CSCI 398 may not be applied to the computer science major or minor.
CSCI 399. Honors Readings in Computer Science.
3 hr.; 3 cr.
Prereq.: Junior or senior standing and permission of the instructor.
Students will study and report on survey and research papers dealing with various current topics in computer science selected by the instructor. Topics for each offering of the course will be announced at registration time.