Computer Science

CS 100     Introduction to Computing Seminar (4)

An introduction to computer information science and computer information systems to include topics such as: structure and organization of modern computers, data representation, abstraction, algorithmic thinking, problem solving, interaction with a computer without using a graphical user interface, operating system basics, and an introduction to programming.

CS 108     Computing Fundamentals (4)

Fundamental concepts of computing and programming. Topics include data types, control structures, functions, arrays, files, and the mechanics of running, testing, and debugging. The course also offers an introduction to the historical and social context of computing and an overview of computer science as a discipline. Course taught using the C programming language.  Prerequisites: No programming or computer science experience is required.

CS 220     Computer Organization (4)

Introduces students to the organization and architecture of computer systems as a hierarchy of levels, beginning with the standard von Neumann model and then moving forward to more recent architectural concepts. Topics include digital logic, microprogramming, conventional machine and assembly language levels.  Emphasis is given to those aspects of computer hardware that effect programming. Prerequisites: CS 108 and MAT 115.

CS 240     Data Structures and Algorithms (4)

Fundamental concepts of data structures and the algorithms that proceed from them. Topics include recursion, the underlying philosophy of object-oriented programming, fundamental data structures including stacks, queues, linked lists, hash tables, trees, and graphs. The basics of algorithmic analysis, and an introduction to the principles of language translation. Prerequisites: CS 108 and MAT 115.

CS 249     Object-Oriented Programming (4)

Problem-solving and program design using an object-oriented approach.  Starts with a review of control structures and data types with emphasis on structured data types and array processing. It then moves on to introduce the object-oriented programming paradigm, focusing on the definition and use of classes along with the fundamentals of object-oriented design.  Other topics include an overview of programming language principles, simple analysis of algorithms, basic searching and sorting techniques, and an introduction to software engineering issues. Prerequisite:  CS 240.

CS 307     UNIX Programming Environment (4)

Promotes effective use of the UNIX programming environment. Topics include: text editor, file system, utility programs, pipe and filter paradigm, construction and use of regular expressions, shell language programming, internet, and interprocess communication.

CS 311     Data Analysis (2)

A hands-on introduction to data analysis using a microcomputer-based statistical package such as SPSS PC+. Topics include descriptive statistics, measures of association, and hypothesis testing. Emphasis is placed upon data collection, data organization and report generation. Prior coursework in statistics is helpful, but not required.  May not be taken by students who have received credit for CSC 323.

CS 321     Introduction to Web Programming (4)

Hands-on introduction to Web programming. Students learn how to create Web pages, write programs to create dynamic Web applications, and understand basic Web development concepts, processes, and best practices. Students who take CS 321 may not take CS 351 for credit. Prerequisite(s): CS 108 and CS 307.

CS 324     Introduction to Internet Tools in Windows (2)

A hands-on introduction to the use of software Internet tools in Windows environments and the concepts and perspective in computing and communications essential to using them effectively. Topics include the Windows interface and environment, and tools for browsing, editing and Web site creation and maintenance available in the Windows environment. At the conclusion of the course, the student will have an understanding of computing communication environments and the ability to use Web software tools to construct, configure, and maintain a Web site.

CS 330     Operating Systems and Networking (4)

Integrates the fundamental concepts of operating systems and networking with the purpose of realizing workable models of modules and constructs. Topics include concurrency, synchronization, processes, threads, long and short term scheduling, memory management, I/O, file systems, device management and multimedia systems. Networking topics include basic network models, layered architectures, network hardware and standard protocols. Within this framework, client-server microkernel design is also presented.  Prerequisites: CS 220 and CS 240.

CS 345     Logic Design (4)

A concentration on the digital logic level of computer organization. The theoretical and practical concepts covered include: Boolean algebra, simplification of Boolean functions, and analysis and synthesis of digital circuits with emphasis on mixed logic. The most common combinatorial and sequential integrated circuits, and algorithmic state machines are highlighted. Prerequisites: CS 220 and MAT 115.

CS 348    LISP Programming (2)

An intensive survey of the LISP programming language. Topics include: expressions, data types and representations, control structures, and input/output functions. Prerequisite: CS 240.

CS 350     Information and Knowledge Management (4)

The concept of information as a unifying theme. Investigates a range of issues in computer science, including database systems, artificial intelligence, human-computer interaction, multimedia systems, and data communication.  Prerequisites: CS 240 and MAT 115.

CS 351     Web Development and Internet (4)

This course teaches students to install, configure and maintain an Internet/Intranet Web Server. Topics include: developing Web pages, Hypertext Markup Language (HTML), Common Gateway Interface (CGI) scripting, and displaying information on the Web via a Database Management System (DBMS). Students who take CS 351 may not take CS 321 for credit. Prerequisites: CS 108 and CS 307.

CS 370     Software Engineering (4)

Combines a range of topics integral to the design, implementation, and testing of a medium-scale software system with the practical experience of implementing such a project as a member of a programmer team. In addition, this course includes discussions on professionalism and ethical responsibilities in software development and human-computer interaction. Prerequisites:  CS 220 and CS 249.

CS 371     Software Engineering Projects (4)

This course offers the student an opportunity to participate in a non‑trivial software engineering team project and to apply the concepts studied in CS 370.  The following will be emphasized throughout the project: documentation of projects; different roles in a project; corporate, academic and military software development standards; specification and requirements documents; configuration, quality assurance, test, verification, integration plans; post‑development software support. Prerequisite:  CS 370.

CS 377     Introduction to the Theory of Computing (4)

Introduction to theoretical computer science. Topics include: automata, formal languages, Turing machines, recursive function theory, computational complexity, and program correctness. Prerequisites: CS 240 and MAT 115.

CS 381     Principles of Computer Security and Cryptography(4)

Focuses on general principles of computer security and cryptography. Topics covered include threat trees, threat taxonomies, malware, common attacks, cryptographic principles, block ciphers, hash functions and public-key cryptography. Prerequisites: MAT 115 or MAT 413, CS 249 and CS 330.

CS 407     UNIX System Administration (4)

Topics will include: concepts involving system administration and maintenance procedures to facilitate normal system operation; technical details regarding problems that could result from operating system malfunction as well as threats to system security that are inherent in a multiprogramming environment; techniques and tools for hardware and software configuration management.  Prerequisite: CS 307; Corequisite: CS 330.

CS 409     Software Project Management (4)

This course presents different techniques for managing software projects and technical staff and familiarizes the student with artifacts of project management. The topics to be covered include: user specification; project proposal; contracts; software cost models and estimation techniques; project planning; implementation management; project delivery. Prerequisite: CS 370.

CS 420     Numerical Computing (4)

Basic techniques of numerical computation. Topics include: computer arithmetic and error control, solution of non‑linear algebraic equations including some non‑linear optimization, polynominal interpolations including splines, curve fitting, integration, and an introduction to differential equations. Emphasis will be on non‑formal settings with a view toward applications.  Prerequisites: Calculus and proficiency in a high-level programming language.

CS 421     Computational Linear Algebra (4)

Computational aspects of linear algebra, including linear optimization models, are explored. Topics include: different algorithms for solution of sets of linear algebraic equations, eigenvalue problems, linear programming, clustering techniques, and software requirements. Prerequisites: CS 240 and MAT 340 or equivalent.

CS 431     Principles of Programming Languages (4)

This course fosters a disciplined approach to the design of programs. Through carefully chosen assignments, the need for certain data structures and programming language features is made apparent. Several different programming languages are used. Topics include: structured programming, functional programming, recursion, and string processing. Prerequisite: CS 240.

CS 441     Computer Systems Architecture (4)

Core principle underlying past, current, future and theoretical machines are discussed in quantitative terms and illustrated with multiple architectures. The tradeoff between cost and efficiency of technologies is a primary focus. Instruction set architectures, instruction level parallelism, N address architectures, RISC/CISC/VLIW philosophies, memory hierarchies, introductory branch prediction, scheduling, data and instruction caching, and processor interfacing are reviewed. The role of simulation and modeling in architecture studies is also discussed. Prerequisite: CS 220.

CS 445     UNIX Network Programming (4)

The course explores computer networks from the implementation and programming point of view. The network architecture and communication protocols studied by the class allow connection of heterogeneous systems in an environment that may be geographically distributed. Prerequisites: CS 240 and knowledge of UNIX and C.

CS 446     Local Area Network Architecture (4)

An intensive study of LAN architecture models for Computer Science students.  Topics include: contention‑free and contention-based models, hybrid nets, HSLANs, integrated voice/video/data models. Prerequisites: CS 220 and CS 330.

CS 450     Computer Graphics (4)

A conceptual and programmatic introduction to raster and vector graphics.  Topics include object-oriented graphics application programming interfaces, hierarchical modeling, concepts of scene graphs, geometric transformations and transform groups, behaviors for animation and interaction, interactive tools for geometries and behaviors, classical application programming interfaces, web-related graphics technologies, and graphics file formats. Prerequisites:  CS 240 and MAT 115.

CS 451     Distributed Systems (4)

A study of distributed protocol and software frameworks. Synchronous and asynchronous networks will be covered. Protocols for leader election and distributed consensus will be presented synchronous networks. Fault-tolerant protocols will be discussed for synchronous systems as well as their adaptability in asynchronous models. The use of shared memory and message passing as well as Byzantine failures will be discussed. Prerequisites: CS 240 and CS 330.

CS 454     System Simulation (4)

An introduction to the basic techniques of systems modeling and analysis through system simulation. Discrete and continuous system simulation models, use of various simulation packages and analysis of simulation output are included for consideration. Prerequisites: C, C++, or JAVA and senior status or permission of instructor.

CS 477     Algorithms (4)

How good is it? Is there a better algorithm to solve it?  This course aims at developing a toolbox of algorithms for solving real problems that arise frequently in computer applications and the principles and techniques for determining their time and space requirements and efficiency. In addition, the general complexity spectrum is discussed to give students a grounding in intractability and unsolvability. Prerequisites: MAT 115 and CS 240.

CS 480     Compiler Design (4)

Basic concepts of formal languages and automata theory and their applications in compiler writing. Several practical parsing methods are discussed.  Prerequisite: CS 240.

CS 489     Cooperative Work‑Study in Computer Science (Variable 1‑4)

Student will be employed by a cooperating firm or agency. Periodic progress reports will be required. Students should be paid by the employer. Prerequisites: Limited to Computer Science majors who have completed core courses and secured departmental approval. Additional restrictions are on file with the department. Only S/U grades are awarded for this course.

CS 490     Selected Topics in Computer Science (Variable 1-4)

Coverage of a specialized computer science topic, of current interest but not adequately treated in regular course offerings. The topic may, for example, be the theoretical and programmatic study of a methodology for a class of computational problems, an introduction to a research area of computing, or an in-depth examination of the usage and internals of a software artifact or framework. The same topic will not be repeated for at least two years. Prerequisites: CS 240 and MAT 115.

CS 491     Independent Study (Variable 1‑4)

Extensive study and research on a particular topic of student interest under the supervision of a faculty member. The student is required to submit a written proposal which includes a description of the project, its duration, educational goals, method of evaluation, and number of credits to be earned. Prerequisites: Matriculated students only, permission of instructor and dean of subject area.

CS 495     Artificial Intelligence (4)

An introduction to fundamental knowledge representation schemes and intelligent problem-solving techniques, and corresponding implementation software artifacts. Both symbol system and biology/society-based approaches are covered. Topics include state space heuristic search, constraint satisfaction, classical logic, fuzzy logic, Bayesian techniques, connectionism, genetic algorithms, swarm and multi-agent intelligence, and planning. Prerequisites:  CS 240 and MAT 115.

CS 498     Capstone Project (2)

Offers students the opportunity to integrate their knowledge of computer science by completing a significant project. Periodic written and oral presentations are required. Most students will complete, report on, and present a project started while taking CS 370. Prerequisites: CS 330, CS 350, and CS 370.

CSC 301J     Introduction to Computing and JAVA Programming (4)

Basic concepts of computing and computer programming are covered. An introduction to computing environments, the internet and applications programming using JAVA. No prior knowledge of computers or computing is expected. Course is for non-majors. Computer Information Science/Systems majors will not receive Computer Science credit for this course.

CSC 301V     Introduction to Computing and Visual Basic Programming (4)

Basic concepts of Computing and programming with object orientation using Visual Basic. Course is intended for beginners.

CSC 310     Computers and Society (2)

A half‑semester course examining the impact of computers in contemporary society. Topics include: components of a computer system, uses of computers in various disciplines and professions, and problems of data security and privacy.

CSC 311B     Word Processing (Windows) (1)

A hands‑on introduction to word processing using Word for Windows or a similar Windows package. Topics include text entry, formatting, spell checking, search and replace, use of a thesaurus and grammar checker, printing, and merge printing. At the conclusion of this course, the student will have the skills necessary for the production of a term paper, resume, or similar prose document, and the ability to produce a customized form letter. Students who have received credit for CSC 311 or CSC 311A may not take this course. Only S/U grades are awarded for this course.

CSC 311C     Spreadsheets I (1)

A hands‑on introduction to spreadsheets. Topics include building, saving and printing a worksheet, simple formatting, functions, and sorting. At the conclusion of the course, the student should be able to design a spreadsheet for statistical or financial applications, and to answer what‑if questions. Students who have received credit for CSC 311 may not take this course. Only S/U grades are awarded for this course.

CSC 311E     Microcomputer Database (1)

A hands‑on introduction to the use of a microcomputer database using Microsoft Access or a similar product. Topics include database creation, data entry, sorting and report preparation,  modification of the database structure, adding/deleting records, form and report generation. Only S/U grades are awarded for this course.

CSC 311F     Presentation Graphics (1)

A hands‑on introduction to presentation graphics using Powerpoint or a similar package. Topics include text charts, bar/line charts, pie charts, slide shows and transition effects, and output to disk, monochrome and color hard copy, overhead transparencies, 35mm film recorder and videotape. At the conclusion of the course, the student will have the skills necessary to use a presentation graphics package to communicate effectively employing a variety of media. Students who have received credit for CSC 312 may not take this course. Only S/U grades are awarded for this course.

CSC 311G     Introduction to Desktop Publishing (1)

A hands‑on introduction to the use of a desktop publishing package for the creation of fliers, posters, newsletters, and similar short publications.  Topics include page layout, style sheets, text formatting, and image handling.  Output to monochrome and color printers is covered. At the conclusion of this course, the student will be able to design and create a short publication. Prerequisite: Ability to use a word processing program, or CSC 311A, CSC 311B, or its equivalent. This course may not be taken by students who have received credit for CSC 312. Only S/U grades are awarded for this course.

CSC 317     Computer Systems and C/C++ Programming (4)

The basic concepts of computer science and computer programming are covered.  Computer hardware and applications programming using C are also introduced. No prior knowledge of computers or computing is required. This course is intended for non‑majors. Computer Science or Computer Systems majors will not receive Computer Science credit for this course.