Computer Science

Computer Science Major

Learn more about this major

Degree Requirements - 126 credits

Students can earn a bachelor of arts degree with this major.  See the requirements for the bachelor of arts degree.

Students can earn a bachelor of science degree with this major.  See the requirements for the bachelor of science degree.

Major Requirements: 16 courses and corresponding laboratories where applicable, 61 credits

Computer Science Requirements (11 courses, 41 credits)

Prerequisites:

Math placement level of 2 or above or any MATH course at the level 100 or above

Credits:

4.00

Description:

Do viruses and rumors spread like forest fires? How do ants cooperate? Do spoken languages and biological species evolve in a similar way? "Ants, Rumors, and Gridlocks" exposes students to introductory aspects of computational science by addressing and answering these and many other questions. Students use and modify virtual experiments preprogrammed in the NetLogo programming language to investigate these topics and others in Social Sciences, Biology, and Environmental Science. No prior knowledge of computer programming or NetLogo is required.

Prerequisites:

MATH placement 3 or higher, MATH-121, MATH-164, or MATH-165 (previous or concurrent)

Credits:

4.00

Description:

This is a rigorous introduction to computer science in Python with an emphasis on problem solving, structured programming, object-oriented programming, and graphical user interfaces. Topics include expressions, input/output, control structures, intrinsic data types, classes and methods, iteration, top-down programming, arrays, graphical user interfaces, and elements of UML. Normally offered each semester.

Prerequisites:

CMPSC-F131 with a minimum grade of C.

Credits:

4.00

Description:

Computer Science II (CSII) is the continuation of Computer Science I. The purpose of CSII is to expand students' understanding of Computer Science and computer programming, assuming that they have the basic knowledge of the Python language. The course introduce another programming language - Java - and also focuses on the pure Object-Oriented features of Java, such as inheritance, polymorphism, and exceptions, as well as on simple data structures (lists, stacks, and queues) and algorithms (searching and sorting). By the end of the semester students will be able to develop sizable computer programs in Java.

Prerequisites:

CMPSC-F132 with a minimum grade of C.

Credits:

4.00

Description:

Includes topics such as strings, stacks, queues, lists, trees, graphs, sorting, searching, hashing, dynamic storage allocation, and analysis of algorithms. Most programming will be done in the Java language. Normally offered each semester.

Prerequisites:

CMPSC-F265

Credits:

4.00

Description:

Object-Oriented Programming in C++ is taught using Trolltech's multi-platform Qt library and other open-source libraries and tools. Emphasis is placed on program design and code re-use. Topics include: encapsulation, inheritance and polymorphism, UML, refactoring, parent-child relationships, properties, event-driven programming, test cases, regular expressions, constraints, XML, design patterns, and graphical user interfaces. We deal with some operating system and programming environment issues and also with code packaging. C++ is a very large language, so we do not attempt to cover it all. Instead we work with a carefully selected subset of language elements that permits students to exploit the powerful Qt libraries and write robust, idiomatic, and interesting code. By the end of the course, the student should have a good command of C++, facility using and building libraries, an understanding and appreciation of the design patterns that we covered, and a well-established discipline of refactoring and code reuse. Prerequisite: CMPSC F265 (which may be taken concurrently). Normally offered each semester.

Prerequisites:

CMPSC-F265

Credits:

4.00

Description:

This course deals with the structure and operation of the major hardware components of a computer. Topics include basic logic design, basic datapath construction, basic pipelining, I/O system design, issues in memory hierarchy and network interface design. Normally offered each fall semester.

Prerequisites:

CMPSC-F353 and CMPSC-F265 and Working knowledge of C++.

Credits:

4.00

Description:

This course presents an overview of modern operating systems, from the points of view of an application developer and of a system developer. It covers process management, scheduling, concurrency management, multi-threading, memory management, and file system organization. Intensive programming assignments in the C language help students learn the POSIX application programming interface (API) and the low-level organization of a general-purpose operating system. Normally offered each spring.

Prerequisites:

CMPSC-265 and MATH-285

Credits:

4.00

Description:

This is an introduction to the design and use of database systems --- systems that manage very large amounts of data. Topics covered include Entity-Relationship (E/R) data model, Relational data model, object-oriented model, and the conversion of E/R and relational models. We shall also learn some database languages, both concrete and abstract, including Structured Query Language (SQL), Object Query Language (OQL), relational algebra, etc. We will introduce the semistructured data, such as the popular Extensible Markup Language (XML), and their usage in database systems as well. The course is intended for computer science students who need to have an in-depth understanding of modern database systems. Normally offered each fall semester.

Prerequisites:

CMPSC-F331 and CMPSC-F353

Credits:

4.00

Description:

This course explores the fundamentals of computer networks, protocols and layering, applications and their implications to everyday networking life. Normally offered in spring.

Prerequisites:

Junior or Senior standing

Credits:

1.00

Description:

This team-taught course is designed to explore career opportunities in Computer Science in depth. This course focuses on career search, the application process, entry, transition and networking for career success. Alternative options such as graduate school will also be explored. Students articulate and reflect on academic work, and co-curricular experiences from the perspective of professionals entering or advancing their careers. The goal of this course is to help students reach their fullest professional potential following graduation.

Choose one additional 4-credit Computer Science course at the 200-level or higher.

Mathematics Requirements (5 courses, 20 credits)

Prerequisites:

MATH-121 with a minimum grade of C, MATH-075, or MATH level 5

Credits:

4.00

Description:

Functions, limits and continuity, squeeze theorem, limits at infinity; instantaneous rate of change, tangent slopes, and the definition of the derivative of a function; power, product, and quotient rules, trig derivatives, chain rule, implicit differentiation; higher order derivatives; derivatives of other transcendental functions (inverse trig functions, exponential and log functions, hyperbolic trig functions); applications of the derivative (implicit differentiation, related rates, optimization, differentials, curve sketching, L'Hopital's rule); anti-derivatives; indefinite integrals; Fundamental Theorem; applications (net change). 4 lecture hours plus 1 recitation session each week. Normally offered each semester.

Prerequisites:

MATH-164 or MATH-165 with a minimum grade of C

Credits:

4.00

Description:

Riemann sums and definite integrals; Fundamental Theorem; applications (areas); integration of exponential functions, trig functions, and inverse trig functions; techniques of integration (substitution, by parts, trig integrals, trig substitution, partial fractions); area, volume, and average value applications; differential equations (separable, exponential growth, linear); improper integrals; infinite sequences and series; convergence tests; power series; Taylor and Maclaurin series (computation, convergence, error estimates, differentiation and integration of Taylor series). 4 lecture hours plus 1 recitation session each week. Normally offered each semester.

Prerequisites:

Take MATH-121, MATH-165, or MATH-166.

Credits:

4.00

Description:

Topics covered include: Logic, basic techniques of proof, set theory, relations and functions, cardinality, elementary number theory, mathematical induction, counting, and discrete probability. Math/CS majors/minors should take this course in their freshman year.

Prerequisites:

MATH-165 with a minimum grade of C.

Credits:

4.00

Description:

Topics include: random variable and distribution; expectation and variance; special discrete/continuous distributions (uniform, binomial, negative binomial, geometric, hypergeometric, Poisson, normal, and exponential distributions); joint distribution, marginal distribution and conditional distribution; covariance; limit theorems (law of large numbers and central limit theorem); and (when time permits) introduction to confidence interval and hypothesis testing; regression analysis. Offered in each fall.

Prerequisites:

Take MATH-185 with a grade of C or better

Credits:

4.00

Description:

Topics covered include: Algorithms, growth of functions (big O notation), computational complexity of algorithms, divide-and-conquer algorithms, graphs and their properties (isomorphisms of graphs, Euler and Hamilton paths, shortest path problem, graph coloring) trees (tree traversal, minimum spanning trees). As time allows: matrices and linear transformations.

Residency Requirement Policy: In the College of Arts and Sciences, a two-course (8 credit) residency requirement must be satisfied for completion of a minor and a four-course (16 credit) residency requirement must be satisfied for the completion of a major.

Computer Science Major Learning Goals & Objectives

Learning goals and objectives reflect the educational outcomes achieved by students through the completion of this program. These transferable skills prepare Suffolk students for success in the workplace, in graduate school, and in their local and global communities.

Learning Goals Learning Objectives
Students will have... Students will be able to...
A mastery of fundamental computer system principles, demonstrate proficiency in theoretical and practical aspects on various computer science fields, and have built solid foundations to pursue advanced degrees
  • Write correct working programs in a variety of programming languages
  • Recognize and be able to use in programs graphs, trees, and other advanced data structures
  • Identify system components, their functions, interactions, and performance aspects
A deep understanding of designing and developing computing systems and applications, and have strong programming skills and software engineering knowledge. Graduates will be capable of problem analysis, identification and definition, and able to apply mathematical foundations in the modeling and designing of its solutions
  • Be able to analyze, design, and implement computer solutions
  • Be able to interpret algorithm complexity
Critical thinking skills and be able to design, implement and evaluate computer applications independently and/or with the teams. Graduates will have strong communication skills and function effectively on multidisciplinary teams to achieve the goal
  • Determine and use appropriate methods to solve application problems
  • Successfully complete design and implementation assignments in small teams
The requisite foundation for lifelong learning and will possess the skills to adapt and thrive in the rapidly changing field of Computer Science
  • Be able to use modern software development techniques, such as object-oriented programming and design patterns
  • Be able to read certain technical articles and participate in related discussions
An understanding and appreciation for the professional, social, legal, security, and ethical implications of computing
  • Be competent in the appreciation for alternate points of view and broader perspectives as related to social, security, legal, and ethical concerns arising in the context of computing technology

Computer Science Minor

Learn more about this minor

Minor Requirements: 5 courses, 20 credits

Prerequisites:

MATH placement 3 or higher, MATH-121, MATH-164, or MATH-165 (previous or concurrent)

Credits:

4.00

Description:

This is a rigorous introduction to computer science in Python with an emphasis on problem solving, structured programming, object-oriented programming, and graphical user interfaces. Topics include expressions, input/output, control structures, intrinsic data types, classes and methods, iteration, top-down programming, arrays, graphical user interfaces, and elements of UML. Normally offered each semester.

Prerequisites:

CMPSC-F131 with a minimum grade of C.

Credits:

4.00

Description:

Computer Science II (CSII) is the continuation of Computer Science I. The purpose of CSII is to expand students' understanding of Computer Science and computer programming, assuming that they have the basic knowledge of the Python language. The course introduce another programming language - Java - and also focuses on the pure Object-Oriented features of Java, such as inheritance, polymorphism, and exceptions, as well as on simple data structures (lists, stacks, and queues) and algorithms (searching and sorting). By the end of the semester students will be able to develop sizable computer programs in Java.

Prerequisites:

CMPSC-F132 with a minimum grade of C.

Credits:

4.00

Description:

Includes topics such as strings, stacks, queues, lists, trees, graphs, sorting, searching, hashing, dynamic storage allocation, and analysis of algorithms. Most programming will be done in the Java language. Normally offered each semester.

Prerequisites:

CMPSC-F265

Credits:

4.00

Description:

Object-Oriented Programming in C++ is taught using Trolltech's multi-platform Qt library and other open-source libraries and tools. Emphasis is placed on program design and code re-use. Topics include: encapsulation, inheritance and polymorphism, UML, refactoring, parent-child relationships, properties, event-driven programming, test cases, regular expressions, constraints, XML, design patterns, and graphical user interfaces. We deal with some operating system and programming environment issues and also with code packaging. C++ is a very large language, so we do not attempt to cover it all. Instead we work with a carefully selected subset of language elements that permits students to exploit the powerful Qt libraries and write robust, idiomatic, and interesting code. By the end of the course, the student should have a good command of C++, facility using and building libraries, an understanding and appreciation of the design patterns that we covered, and a well-established discipline of refactoring and code reuse. Prerequisite: CMPSC F265 (which may be taken concurrently). Normally offered each semester.

Choose one additional 4-credit Computer Science course at the 200-level or higher.

Residency Requirement Policy: In the College of Arts and Sciences, a two-course (8 credit) residency requirement must be satisfied for completion of a minor and a four-course (16 credit) residency requirement must be satisfied for the completion of a major.

Minor Programs Policy: A student declaring a minor may use no more than two courses from a major or double major combination to fulfill the requirements for the minor. No more than one course from one minor may count toward the fulfillment of a second minor. Students may not minor in a subject in which they are also completing a major. For more information, see the Minor Programs section of the CAS Degree Requirements page.

Honors

To complete requirements for honors in the major, a candidate must:

  1. Graduate with a major GPA of 3.5 or higher
  2. Graduate with an overall GPA of 3.0 or higher
  3. Complete CMPSC-410 or CMPSC-501 with a minimum grade of A-
  4. Complete CMPSC-H555 with a minimum grade of A-

    Note: In order to qualify to enroll in CMPSC-H555, a student must meet with the supervising faculty member in advance to agree upon the topic of study and scope of the project

  5. Complete a project, presentation, or thesis in CMPSC-H555 that is approved by the supervising faculty member
  6. CAS Honors Program students only: Present work from the senior honors experience at the Honors Symposium or Pecha Kucha event

To become a candidate for honors in the major, a student must:

  1. Apply to the supervising faculty member by meeting and agreeing upon the topic of study and the scope of the project

CAS Honors Program students only: CAS Honors Program students are assumed to be candidates for departmental honors and should consult with a major advisor(s) during junior year about registering for major honors requirements as described above

All other students: Apply to the department by contacting an advisor. All students should consult with a major advisor(s) to schedule classes as described above

Computer Science Courses

Prerequisites:

Math placement level of 2 or above or any MATH course at the level 100 or above

Credits:

4.00

Description:

Do viruses and rumors spread like forest fires? How do ants cooperate? Do spoken languages and biological species evolve in a similar way? "Ants, Rumors, and Gridlocks" exposes students to introductory aspects of computational science by addressing and answering these and many other questions. Students use and modify virtual experiments preprogrammed in the NetLogo programming language to investigate these topics and others in Social Sciences, Biology, and Environmental Science. No prior knowledge of computer programming or NetLogo is required.

Prerequisites:

Math placement level of 2 or above, or any MATH course at the level 100 or above; GPA of at least 3.3 or Honors student

Credits:

4.00

Description:

Do viruses and rumors spread like forest fires? How do ants cooperate? Do spoken languages and biological species evolve in a similar way? "Ants, Rumors, and Gridlocks" exposes students to introductory aspects of computational science by addressing and answering these and many other questions. Students use and modify virtual experiments preprogrammed in the NetLogo programming language to investigate these topics and others in Social Sciences, Biology, and Environmental Science. No prior knowledge of computer programming or NetLogo is required.

Credits:

4.00

Description:

This is a hands-on course aimed at non-CS students who want to learn how to build interesting and interactive web pages. We do not use any drag- and-drop software for this purpose. Instead we cover the basics of HTML and PHP and, if time permits, we look at some ways of building web pages that interact with databases. Each student will have, for the duration of the course, an account on a server that permits individuals to have web pages that are visible on the World Wide Web.

Credits:

4.00

Description:

This course introduces students to computer game development, including, but not limited to, game programming. We use Game Maker, a framework for personal computers that runs equally well on Mac and PC. We learn about the foundational concepts of two-dimensional (flat) games: graphics, sound, objects, actions, rooms, scores, levels, multiplayer support, artificial intelligence, and more. Game Maker has an intuitive interface that makes game development approachable for everyone, including those who have never written a single game or a single computer program. All games created by Game Maker can be saved as standalone applications and can be shared freely with classmates, friends, and family. This is not a course in graphics design, audio editing, or scriptwriting. Students are encouraged to use their creativity and imagination to design games and the correctness of game implementation is stressed throughout the course. Normally offered in Fall.

Prerequisites:

MATH placement 3 or higher, MATH-121, MATH-164, or MATH-165 (previous or concurrent)

Credits:

4.00

Description:

This is a rigorous introduction to computer science in Python with an emphasis on problem solving, structured programming, object-oriented programming, and graphical user interfaces. Topics include expressions, input/output, control structures, intrinsic data types, classes and methods, iteration, top-down programming, arrays, graphical user interfaces, and elements of UML. Normally offered each semester.

Prerequisites:

CMPSC-F131 with a minimum grade of C.

Credits:

4.00

Description:

Computer Science II (CSII) is the continuation of Computer Science I. The purpose of CSII is to expand students' understanding of Computer Science and computer programming, assuming that they have the basic knowledge of the Python language. The course introduce another programming language - Java - and also focuses on the pure Object-Oriented features of Java, such as inheritance, polymorphism, and exceptions, as well as on simple data structures (lists, stacks, and queues) and algorithms (searching and sorting). By the end of the semester students will be able to develop sizable computer programs in Java.

Prerequisites:

Freshman or Sophomore Standing

Credits:

1.00

Description:

Computer Science is a dynamic discipline and students are not typically exposed to its many facets during their first years in college while important foundation work is done. This module aims to change that by presenting several areas of recent interest. In this way, students can form an idea of the scope of the vast and rapidly growing subject and career options, and begin to map out steps toward a potential career path. In this team-taught seminar-style course, two or three different professors will introduce students to their research areas and related topics. Some of the areas represented among the faculty include data science, machine learning, social networks, and parallel computing and others. The course is intended to be taken freshman or sophomore year.

Prerequisites:

Take CMPSC-F132

Credits:

4.00

Description:

Introduces students to the system programming in C. It covers memory allocation, working with text and binary files, interprocess communications, multithreading, and networking. Students will learn how to work with build tools, profilers, debuggers, and standard and custom libraries.

Prerequisites:

CMPSC-F132 with a minimum grade of C.

Credits:

4.00

Description:

Includes topics such as strings, stacks, queues, lists, trees, graphs, sorting, searching, hashing, dynamic storage allocation, and analysis of algorithms. Most programming will be done in the Java language. Normally offered each semester.

Prerequisites:

CMPSC-F132 and 1 of the following: STATS-240, STATS-250, MATH-134, MATH-165, MATH-164 or MATH-255.

Credits:

4.00

Description:

The field of data science is emerging at the intersection of the fields of social science and statistics, information and computer science and design. Data science involves using automated methods to analyze massive amounts of data and to extract knowledge from them. This course serves as a project-based introduction to data science in Python language, covering data organization and retrieval, statistical data processing and data visualization.

Prerequisites:

CMPSC-F265

Credits:

4.00

Description:

Object-Oriented Programming in C++ is taught using Trolltech's multi-platform Qt library and other open-source libraries and tools. Emphasis is placed on program design and code re-use. Topics include: encapsulation, inheritance and polymorphism, UML, refactoring, parent-child relationships, properties, event-driven programming, test cases, regular expressions, constraints, XML, design patterns, and graphical user interfaces. We deal with some operating system and programming environment issues and also with code packaging. C++ is a very large language, so we do not attempt to cover it all. Instead we work with a carefully selected subset of language elements that permits students to exploit the powerful Qt libraries and write robust, idiomatic, and interesting code. By the end of the course, the student should have a good command of C++, facility using and building libraries, an understanding and appreciation of the design patterns that we covered, and a well-established discipline of refactoring and code reuse. Prerequisite: CMPSC F265 (which may be taken concurrently). Normally offered each semester.

Prerequisites:

Take CMPSC-F265

Credits:

4.00

Description:

This course is an overview of modern software engineering technics, tools, and practices. It covers the software life cycle, requirements engineering, software architecture, software design, including OO design with UML, and testing. Students will work in teams on a medium-size project.

Prerequisites:

CMPSC-F265

Credits:

4.00

Description:

This course deals with the structure and operation of the major hardware components of a computer. Topics include basic logic design, basic datapath construction, basic pipelining, I/O system design, issues in memory hierarchy and network interface design. Normally offered each fall semester.

Prerequisites:

CMPSC-F353 and CMPSC-F265 and Working knowledge of C++.

Credits:

4.00

Description:

This course presents an overview of modern operating systems, from the points of view of an application developer and of a system developer. It covers process management, scheduling, concurrency management, multi-threading, memory management, and file system organization. Intensive programming assignments in the C language help students learn the POSIX application programming interface (API) and the low-level organization of a general-purpose operating system. Normally offered each spring.

Prerequisites:

CMPSC-265 and MATH-285

Credits:

4.00

Description:

This is an introduction to the design and use of database systems --- systems that manage very large amounts of data. Topics covered include Entity-Relationship (E/R) data model, Relational data model, object-oriented model, and the conversion of E/R and relational models. We shall also learn some database languages, both concrete and abstract, including Structured Query Language (SQL), Object Query Language (OQL), relational algebra, etc. We will introduce the semistructured data, such as the popular Extensible Markup Language (XML), and their usage in database systems as well. The course is intended for computer science students who need to have an in-depth understanding of modern database systems. Normally offered each fall semester.

Prerequisites:

CMPSC-F331 and CMPSC-F353

Credits:

4.00

Description:

This course explores the fundamentals of computer networks, protocols and layering, applications and their implications to everyday networking life. Normally offered in spring.

Prerequisites:

Instructor permission required;

Credits:

4.00

Description:

Students specify, design and implement a software system.

Credits:

1.00- 4.00

Description:

Students will be exposed to one or more topics in programming languages, software development, machine learning or other areas of computer science.

Prerequisites:

CMPSC-F131, CMPSC-F132, 1 CMPSC course at 200, 300 or 400 level, and a major GPA of 3.0 or above. Prior to registration, student must submit credit approval form and gain faculty approval.

Credits:

2.00- 4.00

Description:

Student works in a qualified software development setting to gain practical experience in modern industrial software development. Student will apply lessons learned in the classroom within a supervised, professional development while developing a greater understanding of the job expectations and organizational culture. Internship may be taken for 2-4 academic credit hours, at 4 hours of company work per week per each credit. Additional academic reports will be required. Students may not take more than one internship. CPT internships follow the same policies.

Credits:

1.00- 4.00

Description:

Guided study on a topic at an advanced level.

Prerequisites:

Instructor consent required.

Credits:

1.00- 4.00

Description:

Guided study on a topic at an advanced level.

Prerequisites:

Junior or Senior standing

Credits:

1.00

Description:

This team-taught course is designed to explore career opportunities in Computer Science in depth. This course focuses on career search, the application process, entry, transition and networking for career success. Alternative options such as graduate school will also be explored. Students articulate and reflect on academic work, and co-curricular experiences from the perspective of professionals entering or advancing their careers. The goal of this course is to help students reach their fullest professional potential following graduation.

Prerequisites:

Instructor consent required.

Credits:

4.00

Description:

Students specify, design and implement a software system.