Computer Science and Software Engineering

The mission of Fairfield University is to educate its students through a variety of scholarly and professional disciplines. It offers opportunities for individual and common reflection, and it provides training in such essential human skills as analysis, synthesis, and communication. Computational thinking and processes permeate our daily lives, revolutionizing our understanding of the natural world, our tools, and of ourselves. Knowledge of computer science has become highly valued in such diverse fields as psychology, biology, and even philosophy. A degree in Computer Science gives one both marketable skills and intellectual breadth that can be applied to many career choices. At Fairfield, students can pursue multiple degree options as follows: a BS degree in Computer Science (accreditation track), a BS degree in Computer Science (liberal arts track), a double major in Computer Science and Mathematics, and a minor in Computer Science that makes a strong addition to one's resume. The Computer Science (accreditation track) is preparing for accreditation by the Computing Accreditation Commission of ABET. Additionally, the Computer Science (accreditation track) can be continued with a specialization in Software Engineering through a five-year Bachelor/Master's dual-degree track.

Fairfield recognizes that learning is a life-long process and sees the education which it provides as the foundation upon which its students may continue to build within their chosen areas of scholarly study or professional development.

Computer Science

CS 0101 Introduction to Computing3 Credits

This course introduces the concept of computing to students with no prior computer experience. The main ideas of computing are explored and students learn the most essential information about computers and technology in today's digital world and the latest computing trends and skills with live code exercises. Students will explore key ideas of coding at an introductory level. Topics include computer architecture, digital media, network, web, big data, computer security, and basic computer programming.

CS 0131 Fundamentals of Programming3 Credits

Attributes: BUEL Business Elective, ENPC Digital Journalism Production Component

This course introduces the object-oriented programming. Topics include data types, control structures, arrays, I/O, file handling, GUI, and the OOP concept of encapsulation, inheritance, polymorphism, packages, interfaces, and inner classes.

CS 0151 Functional Programming3 Credits

This course provides an introduction to the theory and practice of programming in the functional paradigm. Functional programming is based on a view of programs as data and computing as calculation. This approach facilitates the development of programs that are concise, elegant, and free of broad classes of errors. Topics covered will include a broad introduction to computing, symbolic representation of data, recursion, algebraic data types, higher-order functions and type systems. Students will complete the course with both the ability to program and a useful foundation for further study of topics in discrete math, logic, proof, and computer science theory. No prior programming experience is required.

CS 0221 Computer Organization and Assembler3 Credits

Prerequisite: CS 0142.

This course introduces computer organization using several levels of abstraction to represent a simple computer, starting with logic gates, progressing to assembly language, and ending with a high-level programming language. The course concludes with the design of an assembler/simulator for the model computer.

CS 0231 Programming Workshop3 Credits

Corequisite: CS 0231L or CS 0231P.

Prerequisite: CS 0131.

This course covers advanced programming concepts in one or more current programming languages, including syntax and theories. It prepares students for adapting to various programming environments and coding in an efficient manner. Lab work will accompany the course.

CS 0231L Programming Workshop Lab1 Credit

Corequisite: CS 0231.

This lab accompanies the Programming Workshop course for hands-on practice with course concepts.

CS 0231P Programming Workshop PLG0 Credits

Corequisite: CS 0231.

This peer learning group accompanies the Programming Workshop course for hands-on practice with course concepts.

CS 0232 Data Structures3 Credits

Corequisite: CS 0232L or CS 0232P.

Prerequisite: CS 0131.

This course covers abstract data structures such as queues, stacks, heaps, linked lists, trees, graphs, hash tables and sorting. Students apply data structure concept in advanced programming.

CS 0232L Data Structures Lab1 Credit

Corequisite: CS 0232.

This lab accompanies the Data Structures course for hands-on practice with course concepts.

CS 0232P Data Structures PLG0 Credits

Corequisite: CS 0232.

This peer learning group accompanies the Data Structures course for hands-on practice with course concepts.

CS 0250L Computer Science Sophomore Clinic1 Credit

Corequisite: SW 0304.

This sophomore clinic provides faculty guidance and supervision beyond the scope of existing courses. Students learn how to develop and structure their deliverables, as well as how to use computer science tools in the context of real-world or research projects.

CS 0252 Foundations for Software Construction3 Credits

Prerequisite: CS 0232.

This course focuses on the principles underlying construction of production-quality software systems and the ways in which these principles are realized in an object-oriented language. Students learn a component-based approach to the specification, implementation, and testing of software that facilitates reliability, collaborative work, and ease of modification. Topics include specification, abstract data types, unit testing, and design patterns, along with advanced programming constructs such as graphical user interfaces (GUI), threads, network programming, graphics, animation, and real-time techniques. Each student will complete a substantial project over the course of the semester.

CS 0322 Computer Architecture3 Credits

Prerequisite: CS 0221.

This course examines the theory of logic design including gates, timing diagrams, truth tables, design of basic arithmetic operations, and control mechanisms, as well as general properties of major hardware components (central processing unit, arithmetic-logic unit, memory, input/output devices) and communication between them (buses, interrupts). Surveys actual computer systems.

CS 0324 Microprocessors3 Credits

Prerequisite: CS 0221.

This course reviews conventional logic design using MSI building blocks: multiplexers, decoders, comparators, arithmetic-logic units, registers, and memory. It introduces microprocessor controllers, applying them to the design of several small projects such as a serial-parallel converter, a four-function calculator, and a traffic-light controller. Students design a process controller as a final project.

CS 0331 Operating Systems3 Credits

Prerequisite: CS 0232.

This course introduces the internal operation of modern operating systems. The topics cover a brief history of operating systems, the major components of modern operating systems, and the object-oriented methodology on UNIX-like platform. Various UNIX tools will be used in the course and participants study examples using object-oriented programs as well as large system integration by object-oriented methodology.

CS 0342 Theory of Computation3 Credits

Attributes: MAEL Math Major Elective Course

Prerequisite: MA 0231.

This course explores what computers can and can't do by examining simple mathematical models of computation. Topics include finite state machines, regular expressions, non-determinism, pushdown automata, context-free grammars, and Turing machines. We will see that there are limits to what computers can do, and in doing so, we will learn about what a computer really is; you may be surprised.

CS 0343 Analysis of Algorithms3 Credits

Prerequisite: CS 0232.

This course introduces various algorithms and analyzes the complexity and efficiency of the algorithms. Topics cover classic and heuristic algorithms, searching, sorting and parsing techniques, and algorithm complexity analysis.

CS 0353 Principles of Compiler Design3 Credits

Prerequisite: CS 0232.

This course examines the use of language theory and automata theory in the design of compilers and includes symbol table organization, lexical analysis, syntax analysis, and code generation; code generation versus interpretation; and storage management, optimization, and error handling. Students apply learned concepts to the development of a significant part of a compiler. This is the required capstone course for all majors in computer science.

CS 0354 Theory of Programming Languages3 Credits

Prerequisite: CS 0232.

Topics in this course include the design of programming languages; organization, control structures, data structures; run time behavior of programs; and formal specification and analysis of programming languages. The course includes a comparative survey of several significantly different languages.

CS 0355 Artificial Intelligence3 Credits

Prerequisite: CS 0232.

This course, which examines computer implementation of processes of thought, includes knowledge representation, games, theorem proving, heuristics, symbolic techniques, neural networks, genetic algorithms, and artificial life.

CS 0391 Cognitive Science Seminar3 Credits

Prerequisite: CS 0131 or CS 0141.

In this course, students explore the intersection of computation and such diverse fields as psychology, neuroscience, philosophy, and linguistics in searching for an understanding of cognition, be it real or abstract, human, animal, or machine. How does the mind work? How do we acquire knowledge, represent that knowledge, and manipulate those representations? Can a computer be conscious? Are animals intelligent?

CS 0397 Internship1-3 Credits

The internship program provides computer science majors with an opportunity to gain practical, career-related experience in a variety of supervised field settings. Internships can be in any one of a number of areas, such as software applications or hardware applications. Interns spend a minimum of 10 hours per week in on-site work, complete a required academic component specified by a faculty advisor, and satisfy the University Internship Policy requirements. Students may register for internships during the summer session and/or one to two full semesters and may earn a maximum of six internship credits. Open to seniors only; requires approval of the field placement supervisor and the School of Engineering. An internship may not replace a computer science elective to fulfill the requirement for a major in computer science.

CS 0398 Internship1-3 Credits

The internship program provides computer science majors with an opportunity to gain practical, career-related experience in a variety of supervised field settings. Internships can be in any one of a number of areas, such as software applications or hardware applications. Interns spend a minimum of 10 hours per week in on-site work, complete a required academic component specified by a faculty advisor, and satisfy the University Internship Policy requirements. Students may register for internships during the summer session and/or one to two full semesters and may earn a maximum of six internship credits. Open to seniors only; requires approval of the field placement supervisor and the School of Engineering. An internship may not replace a computer science elective to fulfill the requirement for a major in computer science.

Software Engineering

SW 0300 Software Engineering Methods3 Credits

Prerequisite: CS 0232.

This course explores the requirements gathering, system analysis, and software design methods of software application following the software processes required for the production of high quality software. Techniques for creating documentation and using software development tools will be presented. Students will gain experience in software project management, requirements, analysis, and safety issues in software development; interpersonal skills for management and team membership; and the software engineering discernment of systems architecture. Previously SW 0201.

SW 0301 Software Design Methods3 Credits

Prerequisite: SW 0300.

This course is the continuation of SW 0300 with in-depth projects and further discussions of design and implementation topics. Through the use of case studies and project work that has the student gradually building a large design specification, students will achieve an understanding of how complex applications are designed and built. Previously SW 0202.

SW 0304 Web Development3 Credits

Attributes: ENPC Digital Journalism Production Component

Prerequisite: CS 0131.

This course introduces the student to developing applications for use on the World Wide Web. Students learn basic n-tier concepts for designing distributed applications and gain hands on experience through the construction of Web-based applications. The course covers concepts that allow communication over the Web. This includes designing and authoring Web pages, markup languages, the client-side document object model, usability, search engine optimization, and client-side dynamic Web pages.

SW 0305 Mobile Application Development3 Credits

Prerequisite: CS 0131.

This project-oriented course examines the fundamental aspects of mobile computing, application architecture, and mobile application design and development. Students will learn application development on the Android platform. Students will complete a hands-on project building a prototype mobile application. Topics include user interface design and building, input and data handling, and network techniques and GPS and motion sensing. Students are expected to work on a project that produces a professional-quality mobile application. Projects will be deployed in real-world applications.

SW 0314 Network Concepts3 Credits

This course covers the structure and technologies of computer networks architecture including cabling, wiring hubs, file servers, bridges, routers, and network interface cards. It discusses network software and hardware configurations protocol stacks and connecting a personal computer to a network. The course examines the OSI-model, TCP/IP protocol, and routing protocols. Students will be able to create a subnet of TCP/IP networks.

SW 0320 Software Testing and Maintenance3 Credits

Prerequisite: SW 0300.

This course will cover in-depth methods for software testing, reliability and maintenance of software. Students will learn the principles of software testing and how to apply software testing techniques to the development of quality software and how to deploy software systems, maintain, enhance and reuse software systems.

SW 0321 Software Project Management3 Credits

Prerequisite: SW 0300.

This course explores and practices fundamental project management skills and life cycles required for both the successful management and development of software. Quality management principles of Personal Software Process (PSP) and Team Software Process (TSP) are introduced and practiced. Students will learn how to develop a project plan, scope a project, identify project activities, create work breakdown structures, estimate and schedule resources, construct and analyze project network diagrams, finalize project schedule and cost based on resource activity, recruit team members, organize and manage a project team, monitor and control progress, understand critical path project management, and have knowledge of both agile and traditional project management methods. Previously SW 0204.

SW 0348 Server Management3 Credits

Server Management is a course designed to provide the student with the tools necessary to manage Window Server. The topics include user management, installation and configuration of web server, mail server, FTP server, LDAP and backup, and other routine system and network administration.

SW 0355 Database Management Systems3 Credits

Prerequisite: CS 0232.

This course examines data formats, organizations, representations and structures; design and analysis of searching, sorting, and other algorithms; data management systems; relational database model; domains and relational integrity; structured query language; database design - logical and physical; entity-relationship diagrams; normalization; transaction processing; and database administration.

SW 0380 Health Information Systems3 Credits

Prerequisite: CS 0101.

This course introduces the information systems and their applications in healthcare. The topics include the fundamentals of information systems, medical terminology, electronic health record, health care information regulations and standards, assessing health information systems for managerial and clinical support, project management, information security, and Health IT Leadership.

SW 0381 Human Computer Interface3 Credits

Prerequisite: CS 0101.

This course examines human computer interaction and evaluates various user interfaces, especially as they apply to the health care environment. Topics include data visualization, evidence-based systems and tools (such as PubMed, Up-to-date), and data warehouse design with an emphasis on healthcare.

SW 0382 Special Topics (Shell)3 Credits

This course provides an in-depth study of selected topics in software engineering of particular interest to the students and instructor. The course is counted as a major elective/specialization course. The topics and prerequisites will be announced when this course is offered.

SW 0383 Independent Study1-3 Credits

This course is an individualized study under the supervision of the faculty member. The course emphasizes individual creativity. Students work with a faculty mentor in studying and investigating topics of current interest in software engineering. Students may earn from one to for an independent study course. Enrollment by permission only.

Professor

Rusu, Adrian, chair

Associate Professors

Rusu, Amalia

Assistant Professors

Macbeth

Lecturers

Corcoran
Galasso
Govindaraja
Guelakis
LaMastra
Wilson