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, and the Computer Science (Liberal Arts track) can be continued with a specialization in Applied Data Science through a five year Bachelor/Master's dual-degree.

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 0152 Introduction to Computer Game Modeling3 Credits

This is an introductory computer games modeling course which examines the basics of computer game design and visual effects. Students will use graphics software modeling packages to create characters and visual effects, and to develop a computer game idea, including storyline and plots. Basic programming techniques may also be taught.

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 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 0333 Introduction to Cybersecurity3 Credits

Prerequisite: CS 0231.

In this course, students will be given an extensive overview of the various components of Cybersecurity including software development, operating systems, databases, and networks. They will learn Cybersecurity concepts, issues, and tools that are critical in solving problems in the computing security domain. The course will use lectures, reading assignments, and interactive lab exercises to re-enforce the concepts that are introduced.

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 Design and 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 0350L Computer Science Junior Clinic I1 Credit

Corequisite: SW 0300.

This first junior 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 0351L Computer Science Junior Clinic II1 Credit

Corequisite: SW 0301.

This second junior 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 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 computational and theoretical accounts of human intelligence, includes knowledge representation, commonsense reasoning, planning, natural language understanding, machine learning, and deep learning.

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 0312 Agile Software Engineering3 Credits

Prerequisite: SW 0300.

In this course, students apply in-depth techniques and experience various roles incorporated into one of the main approaches to software development which is agile methodology. It uses detailed knowledge about each of the major traditional software engineering phases to explore a more iterative approach for development of faster and more adaptable software. Proficiency in programming is expected of the students entering this course.

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 0322 Visual Analytics3 Credits

Prerequisite: Junior standing.

In this course, students investigate visual analytics tools and techniques used to synthesize information and derive insight from massive, dynamic, ambiguous, and often conflicting data and to communicate the findings effectively for decision-making. Extensive use of case studies based on real-world events will be used to illustrate course concepts. Students will apply visual analytics techniques toward a focused research problem in a real-world application or a domain of interest.

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

Professors

Rusu, Adrian, chair

Associate Professors

Rusu, Amalia

Lecturers

Corcoran
Galasso
Govindaraja
Guelakis
LaMastra
Wilson