Computer Science Archive 2019-2020

Computer Science Major Archive 2019-2020

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

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\"

Prerequisites:

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

Credits:

4

Description:

This is a rigorous introduction to computer science in Java 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

Credits:

4

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 Java language. The course introduce another programming language - C - 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 (several pages long) computer programs in the C and Java languages. Efficient C and Java program development requires an Integrated Development Environment (IDE) - a collection of tools that make it possible to edit, compile, and debug C and Java programs. Our IDE of choice is Eclipse. Eclipse is free and available for many operating systems, including Microsoft Windows (all flavors), Linux, Unix, and Mac OS X.

Prerequisites:

CMPSC F132

Credits:

4

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 C language. Normally offered each semester.

Prerequisites:

CMPSC-F265

Credits:

4

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

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 & CMPSC F265 and Working knowledge of C++.

Credits:

4

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 and in an assembly language help students to 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

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

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

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 Introductory Requirement (1 course, 4 credits)

Choose one of the following:

Prerequisites:

Permission of Instructor

Credits:

4

Description:

This course provides an alternative to MATH 165 (Calculus I) for those students who have taken MATH 134 (Calculus for Management and Social Sciences) but who do not have the trigonometric precalculus prerequisite (such as MATH 121) for MATH 165. In other words, the sequence MATH 134 / MATH 164 serves as an alternative to the sequence MATH 121 / MATH 165, and similarly prepares students to take MATH 166 (Calculus II). The course includes a thorough review of trigonometry and other precalculus topics. Aspects of limits and differentiation which students have already seen in MATH 134 are presented briefly, but in most cases with more emphasis on conceptual understanding, and often illustrated using more complicated examples. New calculus topics (i.e. not covered in MATH 134) include one-sided limits, special trigonometric limits, differentiability, derivatives of trigonometric functions and their inverses, derivatives of general inverse functions, logarithmic and implicit differentiation, related rates, L'Hopital's rule, intermediate values theorem, Rolle's theorem, mean values theorem, Newton's method, and linearization. 4 lecture hours plus 1 recitation session each week. Normally offered in fall.

Prerequisites:

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

Credits:

4

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.

Mathematics Requirements (4 courses, 16 credits)

Prerequisites:

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

Credits:

4

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-164, MATH-165, or MATH-166

Credits:

4

Description:

Topics covered include: Logic and set theory, basic techniques of proof, relations and functions and their properties (equivalence relations, partial order relations, recurrence relations and their solutions), cardinality, elementary number theory, mathematical induction, counting, Pigeonhole principle, discrete probability. Normally taken second semester freshman year.

Prerequisites:

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

Credits:

4

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); introduction to confidence interval and hypothesis testing; regression analysis. Offered as needed.

Prerequisites:

Take MATH-185 with a grade of C or better

Credits:

4

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 Learning Goals and 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 Archive 2019-2020

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

Description:

This is a rigorous introduction to computer science in Java 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

Credits:

4

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 Java language. The course introduce another programming language - C - 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 (several pages long) computer programs in the C and Java languages. Efficient C and Java program development requires an Integrated Development Environment (IDE) - a collection of tools that make it possible to edit, compile, and debug C and Java programs. Our IDE of choice is Eclipse. Eclipse is free and available for many operating systems, including Microsoft Windows (all flavors), Linux, Unix, and Mac OS X.

Prerequisites:

CMPSC F132

Credits:

4

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 C language. Normally offered each semester.

Prerequisites:

CMPSC-F265

Credits:

4

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 Archive 2019-2020

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-H400 with a minimum grade of A-

    Note: In order to qualify to enroll in CMPSC-H400, 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-H400 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

Prerequisites:

Instructor consent required.

Credits:

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

Computer Science Courses Archive 2019-2020

Prerequisites:

Freshman or Sophomore Standing

Credits:

1

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:

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

Credits:

4

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:

Instructor permission required;

Credits:

4

Description:

Students specify, design and implement a software system.

Prerequisites:

Instructor consent required.

Credits:

1.00- 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:

Junior or Senior standing

Credits:

1

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:

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

Credits:

4

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\"

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

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\"

Credits:

4

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

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

Description:

This is a rigorous introduction to computer science in Java 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

Credits:

4

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 Java language. The course introduce another programming language - C - 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 (several pages long) computer programs in the C and Java languages. Efficient C and Java program development requires an Integrated Development Environment (IDE) - a collection of tools that make it possible to edit, compile, and debug C and Java programs. Our IDE of choice is Eclipse. Eclipse is free and available for many operating systems, including Microsoft Windows (all flavors), Linux, Unix, and Mac OS X.

Prerequisites:

CMPSC F132

Credits:

4

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 C language. Normally offered each semester.

Prerequisites:

CMPSC-F265

Credits:

4

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

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 & CMPSC F265 and Working knowledge of C++.

Credits:

4

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 and in an assembly language help students to 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

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

Description:

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

Credits:

0

Description:

Taken simultaneously with CMPSC 120. Students work with lab instructors to do work that enhances the course understanding. Such work can include practice problems, supervised programming time, as well as question-answer time and group project work. The hybrid version of the recitation: Once every two weeks students meet with an instructor to do work that enhances understanding of the course material. On alternate weeks students do individual programming and reading.

Prerequisites:

Must be taken concurrently with CMPSC F131

Credits:

0

Description:

Taken simultaneously with CMPSC 131. The recitation is a hybrid course. Once every two weeks students meet with an instructor to do work that enhances understanding of the course material. Such work can include practice problems and programming, homework problems and sometimes quizzes on a laptop as well as question-answer time and group project work. On alternate weeks students do on line work such as lecture demonstration of additional examples or homework projects.

Prerequisites:

Must be taken concurrently with CMPSC 132

Credits:

0

Description:

Taken simultaneously with CMPSC 132. The recitation is a hybrid course. Once every two weeks students meet with an instructor to do work that enhances understanding of the course material. Such work can include practice problems and programming, homework problems and sometimes quizzes on a laptop as well as question-answer time and group project work. On alternate weeks students do on line work such as lecture demonstration of additional examples or homework projects.