Computer and Information Science

CS 100         Introduction to Computing Seminar (4)
An introduction to programming and problem solving using a high level programming language such as Python. Designed for students who may want/need some preparation for CS 108.

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.

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.  Prerequisite:  CS 108

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.  Prerequisite:  CS 108

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. Prerequisite: CS 108

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 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 or MAT 413.

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.  Prerequisite:  CS 240.

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. Prerequisite: CS 240.

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, polynomial 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.  Prerequisite:  CS 240.

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 470         Computer Vision and Image Processing (4)
Computer Vision enables machines to truly “see” and understand the real world. The primary goal of this course is to teach students the underlying concepts, ideas, terminology, theory, and techniques behind image processing and computer vision. This will include such topics as image filtering, intensity transformations, convolution in the frequency domain, edge detection, thresholding, feature extraction/detection, machine learning, and deep learning/neural networks. We will also discuss some of the applications of computer vision. Students will be expected to implement selected low-level image processing approaches, mid-level attribute/feature extraction methods, and high-level image data machine learning tasks in code.

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.  Prerequisite:  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 485         Fundamentals of Engineering Exam Seminar (1)
Course covers topics related to the civil discipline of the Fundamentals of Engineering exam. Emphasis will be placed on completion of problems similar to those give on the FE through the use of diagnostic exams, quizzes and/or practice exams. Enrollment is restricted to senior standing or by permission on instructor.

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.  Prerequisite:  CS 240.

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.  Prerequisite:  CS 240.

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 101J    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 101V   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 110      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 111B   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. Only S/U grades are awarded for this course.

CSC 111C   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. Only S/U grades are awarded for this course.

CSC 111E   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 111F    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. Only S/U grades are awarded for this course.

CSC 111G   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 111K      Spreadsheets II (1)
Builds upon CSC 311C.  Topics include lookup and reference functions, formula auditing, data validation, advanced charting, trend lines, data linking, data consolidation, and PivotTable construction/operation/reports.  Only S/U grades are awarded for this course.  Prerequisite: CSC 111C or permission of the instructor.

CSC 117      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.

CSC 124      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.