The Computer Science Program offers the following classes at the undergraduate level.
An introduction to software development as it applies to small programs. Students learn to program in a higher-level language and will learn to read, understand, write and evolve typical small-higher-level programs.
For more information visit
http://cs.fit.edu/~ryan/cse1001
In this second course on the fundamentals of software development, students are introduced to the basic data structures and algorithms used in software design and implementation. Sorting and searching techniques are introduced. (Prerequisite: CSE 1001.)
For more information visit
http://cs.fit.edu/~ryan/cse1002
This course provides an overview of computing-related disciplines and professional careers. Topics include an overview of software engineering, information systems, and computer science; introduction to artificial intelligence, computer graphics, and database systems; and an introduction to the ethical, moral, and legal implications of crafting software.
An overview of computers and terminology. Identification of appropriate problems and solution design using specific applications packages. The course includes an introduction to the use of word processors, data managers, spreadsheets and the Internet (email and WWW browsers). (Non-credit for CS majors.)
An introduction to software for the non-computer-science major. The course focuses on the stages of software development and practice in using Ada. Topics include requirement analysis, design and implementation methods, testing procedures, and an introduction to certifying program correctness, (Non-credit for CS majors.)
An introduction to software for the non-computer-science major. The course focuses on the stages of software development and practice in using C++. Topics include requirement analysis, design and implementation methods, testing procedures, and an introduction to certifying program correctness. (Non-credit for CS majors.)
An introduction to software for the non-computer-science major. The course focuses on the stages of software development and practice in using FORTRAN. Topics include requirement analysis, design and implementation methods, testing procedures, and an introduction to certifying program correctness. (Non-credit for CS majors.)
An introduction to software for the non-computer-science major. The course focuses on the stages of software development and practice in using Pascal. Topics include requirement analysis, design and implementation methods, testing procedures, and an introduction to certifying program correctness. (Non-credit for CS majors.)
This course is an expansion of CSE 1002 to include algorithms and data structures fundamental to software systems development. Topics include abstraction, recursion, algorithm design and complexity analysis, linked lists, stacks, queues, trees, and sorting and searching methods. (Prerequisite: CSE 1002.)
An introduction to second programming language for computer science majors. Students learn to read and write programs in a second language. The language chosen is one with wide popularity and use. The current language is C++. (Prerequisite: CSE 2010 or permission of instructor.)
This course is designed to complement the concepts of software development learned in the prerequisite course by providing the student with a familiarity with the structure, grammar, strengths, and weaknesses of Ada. Students will be assigned programming projects. (Prerequisite: CSE 1502 or CSE 1503. CS majors must have the approval of their advisor.)
This course is designed to complement the concepts of software development learned in the prerequisite course by providing the student with a familiarity of the structure, grammar, strengths, and weaknesses of C++. Students will be assigned programming projects. (Prerequisite: CSE 1501 or CSE 1503. CS majors must have the approval of their advisor.)
This course is designed to complement the concepts of software development learned in the prerequisite course by providing the student with a familiarity of the structure, grammar, strengths, and weaknesses Fortran. Students will be assigned programming projects. (Prerequisite: CSE 1501 or CSE 1502. CS majors must have the approval of their advisor.)
This course introduces principals of software engineering and prepares the student to be a productive team member for large-scale software systems development. Team exercises focus on topics such as requirements definition, change management, project planning, estimating, test planning, quality assurance and configuration management planning. (Prerequisite: CSE 2010 or ECE 2551 and CSE 2401.) )
The course extends topics introduced in CSE 1501 using Ada to solve specific programming problems. Topics include improved representation, implementation, and certification of algorithms; advanced data structures; and methodologies for the design and implementation of programs. (Prerequisite: CSE 1501 or CSE 2401. Non-credit for CS majors.)
The course extends topics introduced in CSE 1502 using of C++ to solve specific programming problems. Topics include improved representation, implementation, and certification of algorithms; advanced data structures; and methodologies for the design and implementation of programs. (Prerequisite: CSE 1502 or CSE 2402.)
A survey of programming language concepts and design principles of programming paradigms (procedural, functional, and logic). Topics include a history of programming languages, data types supported, control structures, and run-time management of dynamic structures. (Prerequisite: CSE 2010 and MTH 2051.)
Introduces formal languages, the construction of scanners and recursive descent, LL(1) and LR(1) parsers, intermediate forms, symbol tables, code generation, and optimization of resultant code. (Prerequisite: CSE 3101 and MTH 2051.)
This course is designed for students in the software development option. They apply computer science skills and software engineering knowledge to modify and enhance a legacy software system using techniques such as software component reuse, and integrated product development team concepts. (Prerequisite: CSE 2410.)
An introduction to COBOL as a programming language for business applications. The syntax and semantics of the language are described, and typical business system applications are implemented.
This course presents a processor's instruction set and programming structures available to the assembly language programmer. Relations between architecture, machine language, and assembly language are discussed. Students interface assembly programs with the operating system and higher-level languages. (Prerequisite: CSE 1002, or CSE 1501, or CSE 1502, or CSE 1503)
This course focuses on basic components of computer architecture. Topics include the central processing unit, arithmetic logic unit, control logic unit, memory unit, and input/output unit. Advanced topics such as pipeline computing, vector processing, parallel architectures, and optimization of computer performance are presented. (Prerequisite: CSE 3101.)
This course covers issues of computer communications. The course material is organized around the TCP/IP reference model and the Open Systems Interface model. The main topics include principles of data communications, local-area networks, CSMA/CD, Ethernet, token bus, FDDI, firewalls, Unix network programming, error correcting code, data compression, and data encryption. (Prerequisite: CSE 2050, or CSE 2501, or CSE 2502.)
This course explores methods for the design of software systems. Among the topics presented are formal specification and software behavior, object-oriented analysis/design, and structured analysis/design. (Prerequisite: CSE 2410.)
Examines the design and implementation of operating systems. Topics include management files, processes, input/output devices, memory hierarchies, and CPUs. Issues involved in moving from single-user systems to multitasking, multiprocessing, and multiprocessor systems are explored. (Prerequisite: CSE 3102, or ECE 1552 and CSE 2502.)
This course investigates the design of a UNIX-based operating system. Topics include command interpreter structure and programming, process management and concurrency issues, file system security, network connectivity, distributed operating systems, and remote resource access. (Prerequisite: CSE 4001.)
This capstone course for the information systems option covers the way organizations can plan for and manage their Information Resource (IR). Topics include organizational IR identity, IR impact on strategic planning, strategies for implementing information systems, and managing the information systems activities. (Prerequisite: CSE 3001.)
Concepts of distributed operating systems and communications protocols of the network and transport layers of the Open System Interface model are explored. Topics include the Internet, interprocess communication, TCP/IP, and sockets. Students analyze and designs network applications such as remote procedure calls and remote file systems. (Prerequisite: CSE 4001.)
An introduction to the fundamentals of computer database systems. Topics include a review of file structures, concepts of database design, functional units of a typical database system, and application of database concepts to real-world problems. (Prerequisite: CSE 2010 and MTH 2051.)
An overview of legal, ethical, and moral consideration for the computing professions. The impact of legal concepts on the computerized society of the present and future. The need for ethical considerations in software systems development and the potential need for professional certification. (Prerequisite: CSE 1501 or CSE 1502 or CSE 1503 or CSE 1002.)
An investigation of the object-oriented methodology from first principles. The course covers issues and methods in object-oriented design. Characteristics of various object-oriented languages will be explained with sample and student-developed programs presented. (Prerequisite: CSE 3001 or CSE 2410 and CSE 2501, or CSE 2502.)
The course covers time and space complexity of algorithms. Algorithms for sorting, searching, string processing, and graph problems are analyzed. Strategies such as divide-and-conquer, greedy, and dynamic programming are presented as problem-solution techniques. Prerequisite: CSE 2010 and MTH 2051.)
The course introduces models of computation for parallel systems. Algorithms for parallel sorting, searching, and matrix operations, and numerical computations are presented and analyzed. Real-time constraints and real-time scheduling algorithms are also discussed. (Prerequisite: CSE 4081.)
Abstract models of computers (finite automata, pushdown automata, and Turing machines) and the language classes they recognize or generate (regular, context-free, and recursively enumerable) will be presented. Applications of these models of compiler design, algorithms, and complexity theory will be presented. (Prerequisite: CSE 2010 and MTH 2051.)
This is the first course in a two semester senior year project sequence. It serves as the capstone for students in the Computer Science option, who team with students in the Software Development option to implement a software project from conception to completion. (Prerequisite: Senior standing in Computer Science option.)
This course builds on the topics and project started in Computer Science Project 1. (Prerequisite: CSE 4101.)
This is the first course in a two semester senior year project sequence. It serves as the capstone for students in the Software Development option, who team with students in the Computer Science option to implement a software project from conception to completion. (Prerequisite: CSE 3003 and Senior standing in Software Development option.)
This course builds on the topics and project started in Software Development Project 1. (Prerequisite: CSE 4201.)
This course covers the graphics pipeline for polygonal based models. It includes mathematical concepts and data structures for graphics; coordinate systems; clipping; scan conversion; hidden-object detection; rendering; color models; and physical/logical input and output devices. (Prerequisite: CSE 2010, or CSE 2501, or CSE 2502.)
This course studies the theories and techniques of human-computer interaction and the design of direct manipulation graphical user interfaces that support menus, buttons, sliders, and other widgets for input, text, and graphics for output. Students design, implement and evaluate a graphical user interface. (Prerequisite: CSE 2010, or CSE 2501, or CSE 2502.)
This course surveys artificial intelligence, focusing on state-space and problem-reduction approaches to problem solving. Attention is given to the use of heuristics and their use in game-playing programs. Also presented are discussions of knowledge representation, automated reasoning, and expert systems. (Prerequisite: CSE 2010 and MTH 2051.)
Computer techniques and neural network applications in artificial intelligence systems (pattern recognition, automatic deduction, and machine learning). Topics include artificial neural networks and computer implementation of neural network architectures. (Prerequisites: CSE 2010, or CSE 2501, or CSE 2502 and MTH 2201, MTH 2401.)
This course explores methods for testing software systems. Both functional and structural methods are presented. Techniques related to software measurement and software reliability engineering are given special emphasis. (Prerequisites: CSE 3421.)
This course explores new and emerging topics within the various disciplines included in the field of computer science. The subject matter of the course will vary, depending on the instructor and other available resources. Course may be repeated for credit, provided the topics change. (Prerequisite: Permission of the instructor.)
This course will provide instruction and experience in timely topics related to the production of quality-engineered software.
An introduction to computer logic, arithmetic, and assembly language. Topics include combinatorial logic, basics of computer organization, the instruction set of a specific processor, assembly level programming, and interfacing assembly programs with higher-level languages and operating systems. (Non-credit for CS and CIS majors.)
Introduction to the fundamentals of software development. Topics include syntax and semantics of a modern structured language and techniques for the design and implementation of simple programs. (Non-credit for CS and CIS majors.)
Advanced data types (stacks, queues, trees, sets, graphs, etc.) are developed. Algorithms that use these data types are introduced and analyzed for time and space complexity. Included are algorithms for searching, sorting, set operations, and graph traversal. (Prerequisites: CSE 5015 or equivalent, MTH 5001. Non-credit for CS majors.)
An introduction to the analysis and design of typical database systems. The course will include theoretical and practical aspects of designing database systems. A substantial project will comprise part of the course. (Prerequisites: CSE 5020, MTH 5001. Non-credit for CS majors.)
This course concentrates on the basic components computer architecture. It includes an introduction to sequential digital logic; the analysis, design, and implementation of sequential logic; the central processing unit; the arithmetic logic unit; the control logic unit; the memory unit; and the input/output unit. (Prerequisites: CSE 5020, MTH 5001. Non-credit for CS majors.)
This course covers analysis and design techniques for development and control of software. Topics include life-cycle models, requirements analysis, specification, project estimation techniques, design methodologies, testing, verification, validation, configuration management, and documentation. (Prerequisites: CSE 5020, MTH 5001. Non-credit for CS majors.)
A survey of programming language concepts including language features, implementation issues, and language groups. (Prerequisites: CSE 5020, MTH 5001. Non-credit for CS majors.)
A detailed study of the various functions provided by a typical operating system. Sequential and concurrent processes; process synchronization problems and algorithms, and scheduling algorithms are also included. (Prerequisites: CSE 5020, MTH 5001. Non-credit for CS majors.)
Topics include modeling and analysis of systems using the discrete-even paradigm; simulation languages such as SLAM and SIMSCRIPT; generation of random numbers; and statistical evaluation of simulation results. (Prerequisites: BUS 2703, CSE 5010.)
This course covers time and space complexity of computer algorithms; algorithm classes, such as divide-and-conquer, greedy, dynamic programming, and backtracking; techniques for solving recurrence equations; graph algorithms; and searching and sorting, polynomial and nondeterministic polynomial problem classes. (Prerequisites: CSE 5020 and MTH 5001.)
This course covers models of computation for parallel systems, parallel sorting and searching, matrix and numerical algorithms, and real-time constraints and algorithms for scheduling real- time systems. (Prerequisite: CSE 5081.)
Abstract models of computers (finite automata, pushdown automata, and Turing machines) and the language classes they recognize or generate (regular, context-free, and recursively enumerable) will be presented. Applications of these models of compiler design, algorithms, and complexity theory will be presented. (Prerequisites: CSE 5020 and MTH 5001.)
This course includes a review of problems, algorithms, Turing machines and computability. Boolean and first-order logic are studied, leading to undecidability results. Relations among complexity classes are studied using reductions and completeness. Approximability and randomized algorithms are presented.
(Prerequisites: CSE 5081 and CSE 5083.)
Independent study in computer science. The student works closely with a faculty member to probe a subject in greater depth than is normally possible in a regular class. A comprehensive research paper or applied research project (length variable per credit hours enrolled) is required. (Prerequisites: Permission of the instructor.)
A study of the internal components of a Database Management System
(DBMS). Topics include data organization, query optimization,
transaction processing, concurrency control, logging and recovery,
security, and distributed DBMS.
(Prerequisites: CSE 5025 and
CSE 5030.)
An extensive treatment of the major topics of compiler design. Such topics include lexical analysis, scanner-generator tools, parsing, syntax-directed translation, static semantic checking, storage organizations, code generation, and code optimization. (Prerequisites: CSE 5020 and MTH 5001.)
This course concentrates on hardware methods of optimizing the performance of a computer system. The main topics include optimization of the memory unit, optimization of the input/output unit, pipeline computing, parallel processing, vector processing, and data-flow computers. (Prerequisite: CSE 5030.)
This course covers advanced topics in computer architecture according to the choice and expertise of the instructor. Possible subjects may include data communications, microcomputer systems, theory of coding, the architecture of symbolic computers, distributed systems, and parallel processing. (Prerequisite: CSE 5130.)
This course includes a detailed study of virtual memory management, file management, and I/O management in a typical operating system. Scheduling is also studied. (Prerequisite: CSE 5045.)
Concepts of distributed operating systems and the communications protocols of the network and transport layers of the Open System Interface model. Topics include multi-processing, interprocess communication, TCP/IP, sockets, and transport layer interface. Students analyze and designs network applications such as remote procedure calls and use of remote file systems. (Prerequisite: CSE 4001.)
A study of techniques used in both the design and implementation of object-oriented programs. A major project in an object-oriented language will be required. (Prerequisite: CSE 5035.)
This course offers presentations by faculty, graduate students, and guest speakers on topics of current interest. Appropriate participation in conferences, workshops, or other professional activities may be substituted. This course may be repeated for credit.
This course covers the graphics pipeline for polygonal based models. It includes mathematical concepts and data structures for graphics; coordinate systems; clipping; scan conversion; hidden-object detection; rendering; color models; physical and logical input devices; output devices; and graphical standards for software. (Prerequisites: CSE 5020 and MTH 5001.)
This course includes advanced topics in computer graphics; image synthesis using textures, shadows, ray tracing, and radiosity methods; and animation, solid modeling, fractals, nonuniform rational B- splines, antialiasing, and advanced graphical data structures. (Prerequisite: CSE 5255.)
The theories and techniques of human-computer interaction, and the design of direct manipulation graphical user interfaces that support menus, buttons, sliders, and other widgets for input, text, and graphics for output. Students design, implement, and evaluate a graphical user interface. (Prerequisite: CSE 5020.)
Fundamental algorithms of graphics and automatic image analysis including segmentation, object-location, boundary representation, object-matching, image registration, and automatic scene analysis. Applications in vision and artificial intelligence are investigated. (Prerequisite: CSE 5020 and MTH 5001.)
Selected topics in computer graphics. Material will vary according to the instructor's and student's interests. This course may be repeated for credit. (Prerequisite: CSE 5256 or CSE 5257.)
Introduces the theoretical foundations of artificial intelligence, focusing on the areas of automated reasoning, search, and heuristics. An appropriate language is introduced to implement concepts presented in the course. (Prerequisites: CSE 5020, MTH 5001.)
A detailed study of the components and characteristics of an expert system, an introduction to reasoning under uncertainty, and learning in expert systems. An appropriate language is introduced to implement concepts presented in the course. (Prerequisite: CSE 5371.)
A course in the theory and methods used to represent and reason with explicit knowledge. Topics include first-order predicate calculus as a representation language, the use of specialized frameworks (frames, nets, databases, etc.), the computational complexity of reasoning, temporal, casual, constraint, and non-monotonic reasoning. (Prerequisite: CSE 5371.)
Current applications of neural networks in artificial intelligence systems are presented. Topics include neural pattern recognition, automatic deduction with neural networks, neural networks and expert systems, neural learning algorithms, adaptive neural networks, and neural network applications of state space search techniques. (Prerequisite: MTH 5320.)
Special topics in artificial intelligence and related areas are covered. Topics include machine learning, uncertainty management, image processing, pattern recognition, logic, and advanced topic in search may be covered. This course may be repeated for credit. (Prerequisites: CSE 5371, approval of the instructor.)
This course explores methods for testing software systems. Both functional and structural methods are presented. Techniques related to software measurement and software reliability engineering are given special emphasis.
Selected topics of current interest in software engineering. Material will vary according to the instructor's and student's interests. This course may be repeated for credit. (Prerequisites: CSE 5035, permission of the instructor.)
Research and preparation of a thesis under the direction of a member of the graduate faculty. A maximum of six credit hours may be applied toward the master of science degree requirements. Graded pass/fail. (Prerequisite: Permission of the instructor/advisor; corequisite: COM 4000.)
All doctoral students are required to enroll for two consecutive semesters. Advanced topics in computer science are presented. Students conduct research on the topics, solve related problems, lead discussions, and write expository papers on their work. (Prerequisite: Acceptance into the doctoral program.)
Research conducted under the guidance of the doctoral-level graduate computer science faculty. The area of research chosen may lead to preparation of a research proposal for dissertation work. (Prerequisite: Doctoral standing in computer science.)
Research and preparation of the doctoral dissertation under the direction of the student's doctoral committee. (Prerequisite: Admission to candidacy for the doctoral degree.)
William D. Shoaff
Comments to author:wds@cs.fit.edu
All contents copyright ©, William D. Shoaff
Revised: Fri Apr 17 14:28:28 EDT 1998