Boston CollegeWebsiteAcademic Catalog
Computer ScienceDepartment Website
Majors
Courses
source 1source 2source 3CSCI1080: Principles of Computer Science (3) intro
This is an introductory course for students with little or no programming experience. It is intended principally for students who will not be CS majors or minors, but it will help prepare students for future computer science courses if they wish to continue, and will enable them to use programming to solve problems in their field of study. The course presents an overview of the history, great principles, and transformative applications of computer science, as well as a comprehensive introduction to programming. Students will start with visual coding and later be introduced to Python. The course is based on the 'learning by doing' approach where active participation and pair programming are pillars of the course.
CSCI1090: Data Science Principles (3) intro
This course will provide students with an overview of the field of data science and its responsible uses, along with an introduction to programming in Python from a data science perspective. An emphasis will be placed on solving problems and applying data science principles to real-world datasets. For example, students will learn sorting algorithms that would be taught in a traditional introduction to programming class, but then will apply the algorithms to a data science problem (for example assessing the fairness of a loan scoring algorithm with respect to protected classes of individuals). Python programming topics will include data structures, functions, recursion, algorithms, exploratory data analysis, data processing and visualization. Students will engage through readings and in-class discussions on topics such as applications of data science for the common good, privacy in a digitally connected world, issues of representation and omission in data collection, biases inherent in constructing information infrastructures and classification schemes, and the impacts of algorithmic decision-making.
CSCI1101: Computer Science I (3) intro
This course is an introduction to the art and science of computer programming and to some of the fundamental concepts of computer science. Students will write programs in the Python programming language. Good program design methodology will be stressed throughout. There will also be a study of some of the basic notions of computer science, including computer systems organization, files and some algorithms of fundamental importance.
CSCI1102: Computer Science II (3) intro
In this course, the student will write programs that employ more sophisticated and efficient means of representing and manipulating information. Part of the course is devoted to a continued study of programming. The principal emphasis, however, is on the study of the fundamental data structures of computer science (lists, stacks, queues, trees, etc.). Both their abstract properties and their implementations in computer programs and the study of the fundamental algorithms for manipulating these structures. Students will use Java for programming.
ADIT1985: Python (4) intro
This course is meant for any student interested in learning computer programming concepts with the Python programming language. We will cultivate our problem-solving abilities as we develop programs in Python. This course is suitable for students with little to no programming experience. The course will start with the basics as we discuss logical decisions and loops. Further, we will explore Python data structures such as tuples, sets, lists, and dictionaries. We will couple this knowledge to make our own classes as we learn about object-oriented programming. Throughout the semester we will discover and implement basic debugging techniques. By the end of this course, students will compose Python programs that solve problems on their own.
ADIT1990: C++ (4) intro
An introduction to programming with C++. This course is meant for students with little or no programming experience. We will start with the basics of programming using the C++ programming language. C++ is the cornerstone programming language used to develop many of the fundamental applications we use on a daily basis. For example operating systems, web browsers and other programming languages such as Java, Python, and SQL are built with C++. We will use the low level nature of the C++ programming language to learn about the fundamental aspects of how a computer works. In this course we will develop basic command line applications, explore how data is stored in memory and how we may use logic to manipulate the data to produce different results.
ADIT2000: Computer Security (4) sys
This course provides a strong starting foundation for understanding the complex threats system managers face today and what they need to do to harden their systems against attack. Today's business system managers need to understand these threats and know how to protect their digital assets. Students in this course will look at computer security through a variety of lenses. Specific topics will include: protecting the physical infrastructure, computer system design considerations, identity and access management functions and how they fit in, the role of network security tools, the importance of audits and having the right security processes and policies in place, business continuity and disaster recover planning, managing vendor contracts and special consideration for cloud-based systems, and ethical considerations.
ADIT2010: Operating Systems (4) sys
This course provides a comprehensive overview of the principles and practices of operating systems. Students will delve into the architecture, management, and optimization of modern operating systems, understanding how they manage resources, provide user interfaces, and ensure security and reliability. The curriculum emphasizes both theoretical concepts and hands-on application.
ADIT2100: Computer Networks (4) sys
This course is an in-depth study of networking utilizing the Open Systems Interconnection (OSI) and Transmission Control Protocol/Internet Protocol (TCP/IP) models. A granular discussion of each layer of the model structure included reviewing core components, security vulnerabilities and options for mitigating risk. The building blocks of the Internet will be discussed including ethernet, routing, and secure communication. Network related software and utilities will be utilized throughout the class to provide a greater understanding of the technologies.
CSCI2227: Introduction to Scientific Computation (3) intro
This is an introductory course in computer programming for students interested in numerical and scientific computation. Emphasis will be placed on problems drawn from the sciences. Many mathematical models of the behavior of complex natural systems have no closed-form solution, and computational modeling is needed for data exploration and to obtain approximate solutions. The course discusses different models and approximation methods, how to implement them as computer programs, and the factors that influence approximation quality. Topics include computer representation of floating-point numbers and data, computer program design and control flow, data visualization, nonlinear equations, systems of linear equations and least-squares, and Fourier analysis, with additional topics as time allows. Students will write programs in the Python programming language, primarily.
CSCI2243: Logic and Computation (3) math
A course in the mathematical foundations of Computer Science, illustrated throughout with applications such as sets and functions, propositional and predicate logic, induction and recursion, basic number theory, and mathematical models of computation such as formal languages, finite state machines, and Turing machines.
CSCI2244: Randomness and Computation (3) math
This course presents the mathematical and computational tools needed to solve problems that involve randomness. For example, an understanding of random variables allows us to efficiently generate the enormous prime numbers needed for information security, and to quantify the expected performance of a machine learning algorithm beyond a small data sample. An understanding of covariance allows high quality compression of audio and video. Topics include combinatorics and counting, random experiments and probability, random variables and distributions, computational modeling of randomness, Bayes' rule, laws of large numbers, vectors and matrices, covariance and principal axes, and Markov chains.
CSCI2254: Web Application Development (3) sys
The web connects our society, providing enormous opportunities for changing and improving how we live every day, from sharing information to interacting with others. We have witnessed the power of the web through various web-based applications, including social media, productivity, and transportation applications. These digital utilities have seamlessly integrated into our routines, fundamentally altering our methods of communication, work, and mobility in recent times.Students will learn how to develop usable and useful web applications in this course. The overall architecture of Internet applications is examined at a high level. Special emphasis is placed on front-end development, including HTML, CSS, and JavaScript. This course further expands to encompass React, a component-based library for building frontend interfaces, as well as Firebase, a cloud-based backend service. The course will culminate with a final project where students take a human-centered design approach to address the needs of people by constructing a sophisticated web application.
CSCI2261: Media Ethics in the Digital Age (3) communication
This course may be used to satisfy one of four electives required within the Communication major.This course gives students an understanding of the ethical dimensions of communication in an accelerating digital world. Drawing on philosophical principles that resonate with Jesuit values, students will learn to identify, evaluate, and where possible interpret moral conflicts in the media and communication environment, in the media industry, and between the industry and the public. Rather than look at ethical conflicts strictly from a Western lens, the course introduces the students to a variety of philosophical and cultural models. Using a case study approach, the course addresses various contemporary ethical concerns, such as social media and mental health, misinformation, hate speech, extremist content, documentaries, alternative business models for journalism, international and cross-cultural issues, commodity activism, guerilla marketing, entertainment, privacy, doxing, and copyright.
CSCI2265: Tech Tools for Playful Learning (3) humans
This course explores the design and use of new technologies for learning and engages students in current debates around educational technologies, computational thinking, coding and robotics. Students will learn how to develop, implement, and evaluate technology-rich curriculum and will design their own computational meaningful projects. They will visit K-2 classrooms to implement technology-rich curricula, will learn how to use video to document their experiences and will become researchers to assess the thinking and learning fostered by the different tools.
CSCI2267: Technology and Culture (3) impact
This interdisciplinary course will first investigate the social, political, psychological, ethical, and spiritual aspects of the Western cultural development with a special emphasis on scientific and technological metaphors and narratives. We will then focus on the contemporary world, examining the impact of our various technological creations on cultural directions, democratic process, the world of work, quality of life, and especially on the emergent meanings for the terms 'citizen' and 'ethics' in contemporary society. Students will explore technologies in four broad and interrelated domains: (1) computer, media, communications, and information technologies, (2) biotechnology, (3) globalization, and (4) environmental issues.
CSCI2268: Data, Ethics and Society (3) impact
If you tried to live for one day without generating any data, how would you spend it? The use of data has proliferated and is pervasive. This timely, topical course examines key ethical questions of the Information Age. These issues pervade numerous, diverse aspects of the economy and society, from human rights to international trade. Students will learn about these topics, beginning first with acquaintance with the dominant ethical frameworks of the 20th and 21st centuries. They will then employ these frameworks to understand, analyze, and develop solutions for leading problems in the Information Age and their technological, social, economic, policy, and legal implications. Subjects include artificial intelligence (AI), big data, privacy, bias, accountability, mis/disinformation, human rights, hate speech, liberty, autonomy, international and global concerns, and emerging issues. You will come away with useful tools to understand and craft answers to some of the most pressing problems of our time.
CSCI2271: Computer Systems (3) sys
This course is about how computing machines implement the human-friendly abstractions we express in our programs. It reveals the internal representations of data and instructions, as well as the management of data storage in memory, the coordination of processes, and the interactions between operating systems and the programs being executed. Computer Systems explores system behavior and operations in considerable detail. This greater detail is essential for optimizing program performance, for working within the finite memory and word size constraints of computers, for effective debugging, and for systems-level programming. This hands-on course introduces you to the C programming language and techniques of systems programming through extensive coding exercises
CSCI2272: Computer Organization and Lab (4) sys
This course studies the internal organization of computers and the processing of machine instructions. Topics include computer representation of numbers, combinational circuit design (decoders, multiplexers), sequential circuit design and analysis, memory design (registers and main memory), and simple processors including datapaths, instruction formats, and control units. In the laboratory-based portion of course students design and build digital circuits related to lecture. Exercises include hardware description languages, combinational and sequential circuits, arithmetic and logic units, and simple datapath and control units.
CSCI2291: Data Science: Methods and Applications (3) ai
This course focuses on efficient organization and processing of data, data visualization and communication, statistical modeling, and machine learning, integrating concepts in responsible data science and social impact, such as bias in data collection and modeling, privacy, ethical design of data science experiments, and model interpretability. Students will apply data science techniques to real-world problems and publicly available datasets arising across the range of human inquiry.
ADIT2500: Cybersecurity Fundamentals (4) sys
This course introduces students to the field of, and concepts and principles of cybersecurity. Students will be introduced to various security topics including security awareness through discussing common security threats and attacks, cybersecurity infrastructure, cryptography, and an overview of risk management.
ADIT2750: Systems Analysis and Design (4) softeng
In this course, students will learn the concepts of the software development lifecycle. Students will learn the concepts of Agile and Waterfall and associated software tools. Likewise an in-depth discussion of the principles of the Information Technology Infrastructure Library (ITIL) framework will be discussed regarding overall service management. Each topic will be discussed with an overall risk management approach.
ADIT2757: Systems Analysis and Design (4) softeng
?
ADIT3010: DevOps Automation and Cloud Security (4) sys
?
ADIT3102: DevOps Automation and Cloud Security (4) sys
?
ADIT3308: Project Management (4) softeng
Participation in IT projects can happen from a variety of angles; from individual contributor, to project team member, to project manager and executive sponsor. As such, this course will take a 360-degree perspective on project management, incorporating the important peripheral elements that influence the discipline. This course will help students develop practical skills for functioning in a variety of roles on projects, including project manager, while developing an appreciation for the importance of governance and project and portfolio management (PPM) in an IT environment, looking at the concept and the practice of projects from the perspective of participant, practitioner, and executive sponsor.
CSCI3310: Topics in Computer Science: Computing Language (3) ai
A course on computational linguistics focusing on core properties of language and how to model them programmatically. Computational work done in different language areas (such as morphology and syntax) in a variety of languages will be explored. Assignments will consist of implementing a set of language tools in Java, along with a final project on a language topic of choice.
CSCI3356: Software Engineering (3) softeng
This course covers the basic life cycle of software development: requirements, design, implementation, testing, and production release. Students will learn the theory related to software engineering, but they will also learn hands-on how to create their own software. The main evaluation of the course is a team project that will simulate a small real project. The project will be done using the framework Django (Python), the CSS Framework Bootstrap, among other technologies. The project will be worth 50% of the grade, as well as 2 midterms, an exam, and a peer assessment (how your team members evaluate the work you did).
CSCI3358: Foundations of algorithmic (un)fairness (3) impact
Computation is increasingly used to support decision-making in our society: banks are given to algorithmic predictions to help them determine loan qualification; in the COVID-19 pandemic, algorithms were used to allocate scarce vaccines; facial recognition algorithms allow us to use our faces as 'keys' to unlock our phones and even houses. In these high-stakes settings, concerns of fairness and justice are salient. This course will equip students with the mathematical tools to understand and address some of these concerns. Topics will include: how to computationally define and diagnose (un)fairness, the role of uncertainty in fairness, disparate treatment vs disparate impact, and contextualization within US anti-discrimination law.
CSCI3360: Human-AI Interaction (3) humans
The recent surge in large-language model development has reached a tipping point, making AI increasingly useful in everyday life for a wide audience. This course will introduce fundamental concepts, ideas, and principles underlying human-AI interaction design. We will cover topics from human-computer interaction and machine learning literature, including cognitive load theory, mixed-initiative models, and key issues like fairness and inclusivity, explainability, and safety. Students will learn these topics via practical applications such as image/video recognition, prompt engineering, and programming assistants. They will carry out hands-on assignments and projects, ranging from producing AI-assisted media content and evaluating large-language models to building AI-driven interactive applications.
CSCI3363: Computer Networks (3) sys
This course studies computer networks and the services built on top of them. Topics include packet-switch and multi-access networks, routing and flow control, congestion control and quality-of-service, resource sharing, Internet protocols (IP, TCP, BGP), the client-server model and RPC, elements of distributed systems (naming, security, caching, consistency) and the design of network services (peer-to-peer networks, file and web servers, content distribution networks). Coursework involves a significant amount of Java/C programming.
CSCI3366: Principles of Programming Languages (3) pls
This course studies issues in programming language design and implementation. Language features like statically scoped variables, higher-order functions, static type-checking, recursion and pattern-matching are considered, from the points of view of both language users and language implementors. The class also introduces the functional programming paradigm, using a language like Haskell or OCaml. Other topics considered include garbage collection, tail recursion, and basics of parsing. Finally, the class introduces computer theorem-proving, using an advanced language like Agda, for reasoning about functional programs. The graded work of the class consists of regular short programming assignments as well as a more substantial project
CSCI3370: Deep Learning (3) ai
Deep Learning is rapidly emerging as one of the most successful and widely applicable sets of techniques across a range of domains, including vision, language, speech, robotics, medicine, and AI in general. This has led to significant success and exciting new directions that may previously have seemed out of reach. This course offers an introduction to the fundamentals of deep learning, covering both theory and applications. It starts from the basics of Neural Networks (NNs) and extends to some of the latest research. Topics covered include neural net architectures (MLPs, CNNs, RNNs, transformers, large language models, generative models), geometry and invariances in deep learning, backpropagation and automatic differentiation, learning theory and generalization, self-supervised learning and robust learning, as well as applications to computer vision, natural language processing, medicine, and science, among others. The course will be delivered through instructor lectures and reinforced with coding assignments that teach both theoretical and practical aspects. Additionally, it will include a project that allows students to explore an area of deep learning that interests them in more depth.
CSCI3383: Algorithms (3) algs
This course is a study of algorithms for, among other things, sorting, searching, pattern matching, and manipulation of graphs and trees. Emphasis is placed on the mathematical analysis of the time and memory requirements of such algorithms and on general techniques for improving their performance.
CSCI3387: Topics in Computational intelligence: Machine Learning Projects (3) ai
In this project based class, we will introduce several machine learning concepts, and illustrate and practice their use. These topics will, tentatively, include: classification, data processing, dimensionality reduction, model evaluation and tuning, ensemble learning, regression, clustering, multi layer artificial neural networks and their use for classification, regression, generative adversarial networks, and reinforcement learning.
CSCI3390: Topics in Computer Science: Wireless and Mobile Networks (3) sys
This course will provide an introduction to the state of the art in wireless and mobile networks. The course will cover the fundamental principles, architectures, and standards of current and upcoming wireless and mobile communication systems, including their applications and uses.
CSCI3392: Logic for Mathematicians and for Computer Scientists (3) theory
A course in mathematical logic for both mathematics and computer science majors. There will be an emphasis on applications in computer science, alongside traditional subject matter. Topics covered include propositional and predicate logic, first-order arithmetic, completeness and incompleteness theorems, computability, automated proof assistants, and satisfiability solvers.
ADIT3500: Laws, Frameworks, and Policies in Cybersecurity (4) impact
This course will provide an introduction to three critical areas of cybersecurity: laws, policies, and frameworks. In this course a review of data security compliance and regulatory laws including: General Data Protection Regulation (GDPR), Health Insurance Portability and Accountability Act (HIPAA), Sarbanes-Oxley Act (SOX), Federal Information Security Modernization Act (FISMA), Family Educational Rights and Privacy Act (FERPA), Gramm-Leach-Bliley Act (GLBA), Payment Card Industry Data Security Standards (PCI DSS) will be discussed. A review of internal and external cybersecurity policies will be conducted including real-world examples. In addition, frameworks including the National Institute of Standards and Technology (NIST-800) framework will also be discussed. All of these topics will be discussed in terms of risk management and risk mitigation.
ADIT3650: Incident Response and Disaster Recovery (4) sys
This course provides an overview of contingency planning, including incident response, disaster recovery, and business continuity planning. Effective techniques to minimize risk and downtime in emergency situations will be discussed. Tabletop exercises will be utilized to mimic actual incidents to prepare students for incident management.
ADIT4110: Ethical Hacking (4) sys
?
CSCI4911: Readings in Computer Science (3) special
Independent reading and research for students who wish to study topics not covered in the regular curriculum.
CSCI4961: Honors Thesis (3) capstone
Independent study project for students enrolled in the departmental honors program.
MATH1102: Calculus I for Math and Science Majors (4) math
MATH 1102 is a first course in the calculus of one variable intended for Chemistry, Computer Science, Geology/Geophysics, Mathematics, and Physics majors. It is open to others who are qualified and desire a more rigorous calculus course than MATH 1100. Topics covered include the algebraic and analytic properties of the real number system, functions, limits, derivatives, and an introduction to integration.
MATH1103: Calculus II for Math and Science Majors (4) math
MATH 1103 is a continuation of MATH 1102. Topics covered in the course include several algebraic techniques of integration, many applications of integration, and infinite sequences and series.
MATH2202: Multivariable Calculus (4) math
Topics include vectors in two and three dimensions, analytic geometry of three dimensions, parametric curves, partial derivatives, the gradient, optimization in several variables, multiple integration with change of variables across different coordinate systems, line integrals, and Green's Theorem.
MATH2210: Linear Algebra (3) math
This course is an introduction to the techniques of linear algebra in Euclidean space. Topics covered include matrices, determinants, systems of linear equations, vectors in n-dimensional space, complex numbers, and eigenvalues. The course is required of mathematics majors and minors, but is also suitable for students in the social sciences, natural sciences, and management.