Faculty: Necaise, Chair; Elouni, Givens, McManus, Palesis, and Tookes.
The computer science curriculum integrates theory and practice by including foundational topics that underpin the discipline and by emphasizing the value of abstraction and good engineering design in project development. Elective courses provide an opportunity for deeper study in areas of interest. An important part of the curriculum is the inclusion of professional practice activities such as research experience, teamwork, oral communication and technical writing, and project development. While being sensitive to changes in technology, the curriculum also seeks to prepare students for lifelong learning to enable them to meet future challenges.
A student expecting to major or minor in computer science should enroll in CSCI 111-CSCI 112 in the first year. If credit is given for one or both of these courses, then a student should enroll in CSCI 211 or CSCI 210. A student interested in future graduate studies should complete the two calculus sequences, MATH 131-MATH 132. A student interested in computer hardware is encouraged to select PHYS 210 to meet one of the collegiate science requirements.
In this course students explore introductory data collection and data analysis techniques common in the business environment. The emphasis of this course is problem-solving and interpretation of quantitative information using spreadsheet applications. Topics covered include formula development, multiple and external datasets, accounting functions, financial data analysis, linear regression, and what-if analysis. C21:NS,QS.
Curriculum: NS,QS
This course provides an introduction to the basic ideas of algorithmic problem solving and an introduction to computer programming. Topics discussed include concepts in software engineering, problem solving, programming control structures, class definition and instantiation fundamentals, file input/output, and elementary data processing. A weekly three-hour laboratory will exercise and enhance student understanding of the principles covered in the lectures. C21:NS,QS.
Curriculum: NS,QS
A continuation of CSCI 111 in which problem solving and software development skills are improved and refined. This course places emphasis on the use of abstraction and common data structures for solving more complex problems. Topics covered include: data abstraction, implementation and use of data structures (lists, maps, stacks, queues, hash tables, binary trees), algorithmic efficiency (an introduction to big-Oh notation), algorithmic techniques (recursion and backtracking) and related applications. A weekly laboratory will exercise and enhance student understanding of the principles covered in the lectures.
Provides an introduction to the theoretical foundations of computer science that combines theory with practical application to a variety of problems in the discipline. Topics include sets, functions, sequences, summations, Boolean algebra, recursive algorithms, complexity, matrices, trees, graphs, and discrete probability. Assignments in the course require a basic understanding of problem-solving and programming experience.
This course provides a study of the hardware and low-level software of a computer system. Topics include data representation, digital logic circuitry, memory organization, basic interfacing concepts, machine language, and assembly language programming.
This course involves students significantly with the structure of a UNIX-based operating system and the C/C++ programming languages. Through the investigation of UNIX, students will learn first principles of system programs and structures. Programming projects will focus on system features and the application programming interface with the system. Topics will include the UNIX shell, system structures, system calls, program development, signals, process management, interprocess communication and concurrency.
An introduction to problem-solving and the iterative design process using the object-oriented paradigm with an emphasis on the design, creation, and testing of large software development projects. Topics include class design and implementation in Java, principles of object-oriented design and development, unit testing, and program documentation. The laboratory sessions will exercise and enhance student understanding of the principles covered in the lectures.
This course introduces the fundamental concepts, principles, challenges, and research in major areas of Robotics. The primary focus is on learning to design, build and program Lego MindStorm EV3 robots. Students will learn the EV3 software package used to program the robots and will build and program robots over the course of the term. Topics include: exploring the features of the EV3 robot controller, designing robotic actions to solve general problems (e.g., moving about), incorporating environmental sensors (e.g., infrared, touch, and color), and building unique robots that have different functions and behaviors based on the problem to be solved. Offered alternate years.
This course provides an introduction to the principles and methodologies of database design and database application development. Topics include data modeling, database design theory, data definition and manipulation languages, relational databases, relational algebra, SQL, query design, and database programming interfaces. Offered alternate years.
This course builds on the content of CSCI 112 to provide a more advanced introduction to algorithms and algorithmic efficiency. It examines algorithms (from areas such as graph theory, game theory, search trees, and matrix applications), the data structures useful in implementing these algorithms, algorithm techniques (divide-and-conquer, dynamic programming, branch and bound, backtracking, and greediness), and algorithm analysis techniques for examining the space and time complexity of algorithms. C21:CC.
This course introduces students to the concepts and protocols of modern computer networks with emphasis on the Internet. Topics include network architecture and layering, routing and switching, commonly used network protocols (Ethernet, IP, TCP, HTTP, SMTP, POP), and client-server network application development. This course includes a significant programming component. Offered alternate years.
Students will learn to use a standard graphics API and apply this knowledge to develop graphics applications for several areas. Topics will include a study of basic graphics algorithms, hardware components, output primitives and their attributes, 2D/3D transformations, clipping, interactive input, viewing pipeline, hidden surface removal, shading models, and curve and surface design. Offered alternate years.
A comparative study of the organization and implementation of a variety of programming languages, and language features. Topics will include data types and data structures, control structures, subprograms, storage management, formal description of syntax, and semantics. The relation between language structure and good programming techniques will be discussed. Languages representing the different programming paradigms will be studied. These languages will be compared and evaluated.
In this course, students will learn to design and develop dynamic web applications with emphasis on server-side programming. Topics include an introduction to basic web technologies (HTML, CSS style sheets) for creating web pages, server-side programming using the PHP programming language, client-side programming using Javascript to create interactive web pages, common programming interfaces for accessing relational databases, and proper techniques for user authentication. This course includes a significant programming component. Offered alternate years.
This course provides an introduction to the concepts, principles, challenges, and research in Artificial Intelligence with a primary focus on defining an intelligent agent. Topics include defining Artificial Intelligence and Intelligent Agents; problem solving techniques; knowledge, reasoning and planning; and working with uncertain knowledge and reasoning.
This course introduces the theory and practice of parallel computing. Through discussions of principles and implementation of these principles, students will gain experience and knowledge of some of the central issues of parallel computing. Topics include: processes sharing resources (architecture models, performance measures, speedup and laws for parallel models), and designing and implementing parallel algorithms in message-passing systems. Offered alternate years.
This course provides an introduction to simulation, with an emphasis on discrete-event simulation and Monte Carlo simulation. Topics include model development, random number generation, elementary statistics, discrete and continuous random variables, estimation, and input modeling.
This course examines concepts and algorithms of modern operating systems. Topics include processes, threads, CPU scheduling, process synchronization, deadlocks and memory management. Programming assignments will complement these topics. Offered alternate years.
A study of some of the theoretical foundations of three central areas of the computer science curriculum: algorithms, programming languages, and computer architecture. Topics may include finite automata, formal languages, Turing machines, computability, and computational complexity. Students entering this course will be expected to understand techniques of mathematical proof.
Offered as needed.
An independent study under the guidance of a member of the department. At least a 3.25 cumulative GPA and approval by the curriculum committee are required.
This course, given in a topical-seminar format, is intended to help students strengthen their skills in reading, understanding, exploring, and presenting computer science concepts. Led by the course instructor and centered on a single topic or thread of topics, students participate in the delivery of the instruction for the course. As appropriate to the content, students may be required to complete projects that enhance the opportunity to develop a deep understanding of the course content.
A culminating experience in which a computer science or cybersecurity major will draw upon the knowledge and skills acquired in previous courses to examine relevant literature to a specific problem within an area of their major program. The problem selected by the student in consultation with their capstone advisor must be approved by the departmental capstone committee through a written proposal. A formal oral presentation along with a written report are required to complete the capstone experience. CSCI 401 will be evaluated by the departmental capstone committee members and will be based on the student's individual work with their capstone advisor, the capstone project, and the final presentation and written report. C21:CS.
Curriculum: CS
A culminating research project in which a computer science or cybersecurity major will integrate, extend, and apply knowledge and skills accumulated through the pursuit of their major programs. The project selected by the student in consultation with the instructor must be approved by the departmental capstone committee through a written proposal. The student is required to spend at least three hours per week in the laboratory. The project will culminate in a formal written report and oral presentation. Performance in CSCI403 will be evaluated by the departmental capstone committee members and will be based on the students' individual work with the instructor, the capstone project, and the final presentation and written report. C21:CS,EL.
Curriculum: CS,EL
An experience in practical education. Each student enrolled in this course will become an active participant in a company's computer science applications. Work schedules will be determined by the participating company. Students will be responsible to a supervisor or supervisors, at the discretion of the respective companies, and to a member of the college's computer science department. Actual work performed will be determined by the company supervisors and may or may not involve a special project. The student, his or her company supervisor, and a computer science department faculty member will meet to discuss the program. At the end of the term, before a final grade is assigned, each student must submit a formal report which summarizes the student's work activities during the term. In addition, the company supervisor may also submit a short, confidential report on the student's performance. Application required; see Internship Program. Offered as needed. C21:EL.
Curriculum: EL
A Field Study is an experiential learning course combining elements of workplace experience, observation, and research. Students are expected to work closely with a faculty field study supervisor to develop learning objectives and a plan of study appropriate to the discipline. Assignments may include a reflective journal, activity reports, and one or more directed research papers appropriate to the discipline. Workplace experience requirements should be similar to those of internships. Students should not receive compensation from workplace experience if they are receiving three-hour course credit.
A course intended to provide further insight into the many facets of computer science. Students may expect extensive reading assignments, the preparation of written and oral reports, and the programming and documentation of non-trivial computer projects. Offered as needed.
A continuation of CSCI 481. Offered as needed.
This course provides qualified students the opportunity to explore and conduct extensive research in an area of computer science or cybersecurity that goes beyond the work completed in pursuit of their majors. Considerable self-discipline, diligence, and ingenuity on the part of the student are necessary. The research project selected by the student in consultation with a faculty supervisor, must be approved by the departmental faculty through a written proposal. The project will culminate in a formal written report and oral presentation. When used to satisfy the capstone experience, the performance in CSCI 485 will be evaluated by the departmental capstone committee members and will be based on the student's individual work with their capstone advisor, the capstone project, and the final presentation and written report. C21:CS,EL.
Curriculum: CS,EL