Objects and Design

Last Updated: Wed, 01/07/2026
Course prefix:
CS
Course number:
2340
Semester:
Spring
Academic year:
2026
Course description:

Object-oriented programming methods for dealing with large programs. Focus on quality processes, effective debugging techniques, and testing to ensure a quality product. CS2340 takes students who know an object-oriented language and focuses on getting them to use that language in a true object- oriented style. The course achieves this goal by introducing a design methodology and notation, and covering standard principles and practice in design.

Course learning outcomes:

Core Outcomes: The primary outcomes are:

1. Improve existing object-oriented programming skills.

2. Complete a team-based large-scale programming project as a team.

3. Use industry tools and practices to implement a large-scale project.

4. Conduct object-oriented analysis and design and document it with

standard techniques (UML).

• General Outcomes:

1. (Movement - Synthesis) Improve existing programming skills by developing much larger and more complex programs than in previous classes.

2. (Accomplishment - Synthesis) Given a requirements list, complete a team-based large-scale programming project that implements thoserequirements. The project will require at least 3000 lines of code and multiple compilation modules (or equivalent jars) to complete.

3. (Experience - Analysis) Reflect on the difficulties of team membership and the challenges of developing software in a team environment.

4. (Competency - Application) Demonstrate the ability to use a version control system such as Git to manage team code.

5. (Competency - Application) Demonstrate the ability to use standard tools to help with large-scale projects such as commercial quality development environments (e.g., PyCharm, IntelliJ, or Eclipse).

6. (Movement - Synthesis) Improve object-oriented development skills by learning to think about objects when faced with a design problem. This is evidenced by the minimal use of class methods and data and the proper use of abstraction, information hiding, and encapsulation.

7. (Competency - Synthesis) Given a specification of requirements, analyze those requirements using domain models, use cases, and robustness diagrams. Select appropriate candidate objects representing the problem domain.

8. (Competency - Synthesis) Given a set of use cases and domain models representing a customer problem, design an object-oriented solution

and document that solution using the Unified Modeling Language (UML).

9. (Competency - Analysis) Apply standard design principles and patterns to a problem specification. Analyze a proposed design to determine its

compliance with the standard principles (e.g., open-closed, dependency inversion, Law of Demeter) and make corrections as necessary.

10. (Achievement - Synthesis) Given a problem specification, design, document, and implement an object-oriented solution as a development team.

11. (Competency - Analysis) Demonstrate the ability to derive open and enclosed tests from code or specifications. Document those tests in a basic test plan and implement those tests using an automated test environment such as JUnit.

Required course materials:
  1. Correa, D., & Lim, G. (2024). Django 5 for the impatient: Learn the core concepts of Django to develop Python web applications.
  2. Ko, A. J. (2025). Cooperative software development https://faculty.washington.edu/ajko/books/cooperative-software-development (Retrieved July 28, 2025)
  3. Ko, A. J. (2025). Design methods. https://faculty.washington.edu/ajko/books/design-methods/ (Retrieved July 28, 2025)
  4. Rozanski, N., & Woods, E. (2012). Software systems architecture: Working with stakeholders using viewpoints and perspectives (2nd ed.). Addison-Wesley.
  5. Freeman, E., Robson, E., Bates, B., & Sierra, K. (2004). Head First Design Patterns: A Brain-Friendly Guide. " O'Reilly Media, Inc."
Grading policy:

Letter grades:

Letter grades are assigned according to the following convention:

• A = [90, 100) points.

• B = [80, 90) points.

• C = [70, 80) points.

• D = [60, 70) points.

• F = [0, 60) points.

Keep in mind that point values (fractional or otherwise) are not rounded to the next grade level. For example, 89.99 will be reported as "B." 90.00 (or higher) will be reported as "A." There are no exceptions.

• Regrade Requests:

Once graded assignments and/or assessments are returned, there is a five-days window during which you can revise and request grade updates. The regrade period begins when the grades are released on Canvas. Late regrade requests will not be considered. The regrade period (i.e., five-days window) considers weekend days and holidays.

It is the student’s responsibility to keep track of their performance in the course. The instructor’s grades will be assumed to be accurate unless the student can prove otherwise. Always keep a digital copy of ALL work turned in to your instructional team. Any student wishing for a regrade must submit a written document indicating the specific section the student is requesting a regrade of and a complete explanation (rationale) of why the student considers why they deserve a different grade. Please consider:

• Verbal regrade requests will not be accepted.

• The instructional team reserves the right to regrade the entire submission and not just the specific portion in question. Regrade requests mean a potential update to the entire or partial submission. That is, the student’s grade can be raised or lowered by the regrade request.

Attendance policy:

Attendance to class is mandatory, and your participation is required. Engagement with the course is required to be successful in the course. Lectures will cover material

that may not be available on Canvas. It is the student’s responsibility to catch up with fellow classmates on notes and topics missed in the case of an absence. Any

participation activities will be excused for absences that are verified by the Dean ofStudents Office (DoS). If a student misses class and feels it is excused, they may submit

their documentation to the Dean of Students Office. All absences must be approved by the Dean of Students Office.

You may notify me (your instructor) about your absence, but please do not send me your documentation directly. I will only excuse the activity when I receive notification

from the DoS Office. Excusing any activities may not be done on Canvas until the end of the semester to provide the student with a "worst-case scenario;" the student is

encouraged to compute their grade offline outside of Canvas based on the weights outlined in Canvas.

Participation in all team-based assignments is required and expected, and your grades will be affected based on your contribution and response to your assigned

tasks in your teams.

Academic honesty/integrity statement:

Students are expected to maintain the highest standards of academic integrity. All work submitted must be original and properly cited. Plagiarism, cheating, or any form of academic dishonesty will result in immediate consequences as outlined in the university's academic integrity policy. Using third-party libraries or tools that are not explicitly mentioned requires the permission of the instructional team.

The use of copyrighted or offensive material in your projects is prohibited and will be sanctioned through the Office of Student Integrity (OSI).

Instructor First Name:
Pedro
Instructor Last Name:
Feijoo Garcia
Section:
B
CRN (you may add up to five):
20955
Department (you may add up to three):

Objects and Design

Last Updated: Wed, 01/07/2026
Course prefix:
CS
Course number:
2340
Semester:
Spring
Academic year:
2026
Course description:

Object-oriented programming methods for dealing with large programs. Focus on quality processes, effective debugging techniques, and testing to ensure a quality product. CS2340 takes students who know an object-oriented language and focuses on getting them to use that language in a true object- oriented style. The course achieves this goal by introducing a design methodology and notation, and covering standard principles and practice in design.

Course learning outcomes:

Core Outcomes: The primary outcomes are:

1. Improve existing object-oriented programming skills.

2. Complete a team-based large-scale programming project as a team.

3. Use industry tools and practices to implement a large-scale project.

4. Conduct object-oriented analysis and design and document it with

standard techniques (UML).

• General Outcomes:

1. (Movement - Synthesis) Improve existing programming skills by developing much larger and more complex programs than in previous classes.

2. (Accomplishment - Synthesis) Given a requirements list, complete a team-based large-scale programming project that implements thoserequirements. The project will require at least 3000 lines of code and multiple compilation modules (or equivalent jars) to complete.

3. (Experience - Analysis) Reflect on the difficulties of team membership and the challenges of developing software in a team environment.

4. (Competency - Application) Demonstrate the ability to use a version control system such as Git to manage team code.

5. (Competency - Application) Demonstrate the ability to use standard tools to help with large-scale projects such as commercial quality development environments (e.g., PyCharm, IntelliJ, or Eclipse).

6. (Movement - Synthesis) Improve object-oriented development skills by learning to think about objects when faced with a design problem. This is evidenced by the minimal use of class methods and data and the proper use of abstraction, information hiding, and encapsulation.

7. (Competency - Synthesis) Given a specification of requirements, analyze those requirements using domain models, use cases, and robustness diagrams. Select appropriate candidate objects representing the problem domain.

8. (Competency - Synthesis) Given a set of use cases and domain models representing a customer problem, design an object-oriented solution

and document that solution using the Unified Modeling Language (UML).

9. (Competency - Analysis) Apply standard design principles and patterns to a problem specification. Analyze a proposed design to determine its

compliance with the standard principles (e.g., open-closed, dependency inversion, Law of Demeter) and make corrections as necessary.

10. (Achievement - Synthesis) Given a problem specification, design, document, and implement an object-oriented solution as a development team.

11. (Competency - Analysis) Demonstrate the ability to derive open and enclosed tests from code or specifications. Document those tests in a basic test plan and implement those tests using an automated test environment such as JUnit.

Required course materials:
  1. Correa, D., & Lim, G. (2024). Django 5 for the impatient: Learn the core concepts of Django to develop Python web applications.
  2. Ko, A. J. (2025). Cooperative software development https://faculty.washington.edu/ajko/books/cooperative-software-development (Retrieved July 28, 2025)
  3. Ko, A. J. (2025). Design methods. https://faculty.washington.edu/ajko/books/design-methods/ (Retrieved July 28, 2025)
  4. Rozanski, N., & Woods, E. (2012). Software systems architecture: Working with stakeholders using viewpoints and perspectives (2nd ed.). Addison-Wesley.
  5. Freeman, E., Robson, E., Bates, B., & Sierra, K. (2004). Head First Design Patterns: A Brain-Friendly Guide. " O'Reilly Media, Inc."
Grading policy:

Letter grades:

Letter grades are assigned according to the following convention:

• A = [90, 100) points.

• B = [80, 90) points.

• C = [70, 80) points.

• D = [60, 70) points.

• F = [0, 60) points.

Keep in mind that point values (fractional or otherwise) are not rounded to the next grade level. For example, 89.99 will be reported as "B." 90.00 (or higher) will be reported as "A." There are no exceptions.

• Regrade Requests:

Once graded assignments and/or assessments are returned, there is a five-days window during which you can revise and request grade updates. The regrade period begins when the grades are released on Canvas. Late regrade requests will not be considered. The regrade period (i.e., five-days window) considers weekend days and holidays.

It is the student’s responsibility to keep track of their performance in the course. The instructor’s grades will be assumed to be accurate unless the student can prove otherwise. Always keep a digital copy of ALL work turned in to your instructional team. Any student wishing for a regrade must submit a written document indicating the specific section the student is requesting a regrade of and a complete explanation (rationale) of why the student considers why they deserve a different grade. Please consider:

• Verbal regrade requests will not be accepted.

• The instructional team reserves the right to regrade the entire submission and not just the specific portion in question. Regrade requests mean a potential update to the entire or partial submission. That is, the student’s grade can be raised or lowered by the regrade request.

Attendance policy:

Attendance to class is mandatory, and your participation is required. Engagement with the course is required to be successful in the course. Lectures will cover material

that may not be available on Canvas. It is the student’s responsibility to catch up with fellow classmates on notes and topics missed in the case of an absence. Any

participation activities will be excused for absences that are verified by the Dean ofStudents Office (DoS). If a student misses class and feels it is excused, they may submit

their documentation to the Dean of Students Office. All absences must be approved by the Dean of Students Office.

You may notify me (your instructor) about your absence, but please do not send me your documentation directly. I will only excuse the activity when I receive notification

from the DoS Office. Excusing any activities may not be done on Canvas until the end of the semester to provide the student with a "worst-case scenario;" the student is

encouraged to compute their grade offline outside of Canvas based on the weights outlined in Canvas.

Participation in all team-based assignments is required and expected, and your grades will be affected based on your contribution and response to your assigned

tasks in your teams.

Academic honesty/integrity statement:

Students are expected to maintain the highest standards of academic integrity. All work submitted must be original and properly cited. Plagiarism, cheating, or any form of academic dishonesty will result in immediate consequences as outlined in the university's academic integrity policy. Using third-party libraries or tools that are not explicitly mentioned requires the permission of the instructional team.

The use of copyrighted or offensive material in your projects is prohibited and will be sanctioned through the Office of Student Integrity (OSI).

Instructor First Name:
Pedro
Instructor Last Name:
Feijoo Garcia
Section:
A
CRN (you may add up to five):
24970
Department (you may add up to three):

Computing for Engineers

Last Updated: Tue, 01/06/2026
Course prefix:
CS
Course number:
1371
Semester:
Spring
Academic year:
2026
Course description:

This course is intended as an introduction to solving problems by coding solutions in the MATLAB programming environment. It assumes no prior knowledge of programming or coding skills. Students will develop a beginner’s skill level for deriving algorithms. This will be complemented by them learning how to use the MATLAB language and integrated development environment in concert to code these algorithms as functions. The development of the students’ skills and knowledge base will be done in the context of them encoding data; processing the data with respect to a given problem; and outputting a correct answer in the appropriate format.  

The course begins with an introduction to the concepts of data encoding and the methodology of writing functions. There is also a good deal of time spent on getting the students familiar with the programming and evaluation environments. From that foundation, students are exposed to variables, functions, and scope. The course then expands the students’ abilities to deal with data collections of vectors and arrays. Next, they learn the power of conditional and iteration statements. They then use these abilities to deal with the more complex data collections of cell arrays, spreadsheets, text files, structures, and directory information. The course also provides instruction on how to make plots of the results of their data analyses.  It concludes by exposing students to images.

Course learning outcomes:

Upon successful completion of the course, you will be able to: 

  1. Use the MATLAB integrated development environment and programming language to write functions as solutions to problems involving various forms of data.
  2. Use a six-step process to develop an algorithmic solution to a problem.
  3. Understand and utilize the fundamental concepts of coding
    1. Comments
    2. Variables
    3. Data
    4. Functions
    5. Conditionals
    6. Iterations
  4. Translate a basic algorithm into code.
  5. Test your coded solutions
  6. Trace and debug your code and the code of others.
Required course materials:

MATLAB Programming Language & IDE 

MATLAB is an excellent first language for engineers. MATLAB is a registered trademark of The MathWorks, Inc.  It is an interpreted language that provides students immediate feedback from their actions, and postpones many of the tedious details of correctness until a program is run. MATLAB has an interactive development environment (IDE) that is ideal for ordinary engineering computation. The course is conducted from the MATLAB programming environment. 

MATLAB is available free of charge for students to install on their personal computers.  Follow the instructions provided at this link (https://matlab.gatech.edu/ (Links to an external site.)). Be careful to set your affiliation to Student and select the latest MATLAB version for students. MATLAB is also available on all the public computers on campus.  

Video Lectures (Suggested, Not Required) 

  • This class has a video library of recorded lectures.
  • The course calendar details which videos correspond to in-class lectures. Video Index

Learning Management System (LMS) = Canvas 

  • All course information and resources will be found on the class Canvas site.
  • This includes, but is not limited to: Syllabus, Assignments, Submissions, Announcements, Grades & Feedback, Resources, etc.
  • The files and slides that are covered in each lecture are provided by going to Files >  Stallworth's Files > Lecture Notes on Canvas
Grading policy:

There is no curve in this course. However, there are opportunities to earn extra credit. (See Homework, Lecture Quizzes, and Recitation). There are three possible grade distributions. We will calculate your grade for all three distributions. Your course grade will be the higher of the three. 

Grade distribution 1: (Basic) 

  • 15% Homework (10 Assignments worth 1.5% each)
  • 15% Lecture Quizzes (24 Quizzes, Highest 18 worth ~ 0.833% each)
  • 40% 3 Midterm Exams
    • 13% Exam 1
    • 13% Exam 2
    • 14% Exam 3
  • 30% Final Exam

    Grade distribution 2: (Final Exam Replaces Lowest Exam Grade) 

  • 15% Homework (10 Assignments worth 1.5% each)
  • 15% Lecture Quizzes (24 Quizzes, Highest 18 worth ~ 0.833% each)
  • 26% 3 Midterm Exams
    • 13% Exam 1
    • 13% Exam 2
  • 44% Final Exam

    Grade distribution 3: (Final Exam Dropped) 

  • 15% Homework (10 Assignments worth 1.5% each)
  • 15% Lecture Quizzes (24 Quizzes, Highest 18 worth ~ 0.833% each)
  • 70% 3 Midterm Exams
    • 23% Exam 1
    • 23% Exam 2
    • 24% Exam 3
  • 0% Final Exam

    Extra Credit can be earned in the following ways: 

  • Extra Credit points are added to your class average.
  • A total of 2.5% of Extra Credit can be earned in the following ways
    • 1.25% from Homework
    • 1.25% from Recitation
  • Your final grade will be assigned as a letter grade according to the following scale. There is no curve in this class.
    • A    90-100%
    • B    80-89%
    • C    70-79%
    • D    60-69%
    • F   0-59%   
Attendance policy:

This is a synchronous course. While it is not mandatory, students are expected to attend all lectures. There will be quizzes given in lecture that are worth 15% of your grade. Recitation is optional but is an opportunity to gain understanding and to earn some extra credit.   

Academic honesty/integrity statement:

Students are expected to maintain the highest standards of academic integrity. All work submitted must be original and properly cited. Plagiarism, cheating, or any form of academic dishonesty will result in immediate consequences as outlined in the university's academic integrity policy.

Core IMPACTS statement(s) (if applicable):

Core IMPACTS refers to the core curriculum, which provides students with essential knowledge in foundational academic areas. This course will help students master course content, and support students’ broad academic and career goals.  

This course should direct students toward a broad Orienting Question:  

  • How does my institution help me to navigate the world?  

Completion of this course should enable students to meet the following Learning Outcome:   

  • Students will demonstrate the ability to think critically and solve problems related to academic priorities at their institution.  

  Course content, activities and exercises in this course should help students develop the following Career-Ready Competencies:  

  • Critical Thinking
  • Teamwork
  • Time Management  
Instructor First Name:
Cedric
Instructor Last Name:
Stallworth
Section:
A, B & GR
CRN (you may add up to five):
21246
21262
31452
Department (you may add up to three):

Robotics: AI Techniques

Last Updated: Fri, 01/09/2026
Course prefix:
CS
Course number:
7638
Semester:
Spring
Academic year:
2026
Course description:

In this course, you will learn how to program all the major systems of a robotic car based on lectures
from the former leader of Google’s and Stanford's autonomous driving teams, Sebastian Thrun. You
will learn some of the basic techniques in artificial intelligence, including probabilistic inference,
planning and search algorithms, localization, tracking, and PID control, all with a focus on robotics.
Extensive programming examples and assignments in Python will apply these methods in the context
of autonomous vehicles.

Course learning outcomes:

Upon successfully completing this course, you will be able to:
•Implement filters (including Kalman and particle filters) in order to localize moving objects
whose locations are subject to noise.
•Implement search algorithms (including A*) to plan the shortest path from one point to another
subject to costs on different types of movement.
•Implement PID controls to smoothly correct an autonomous robot’s course.
•Implement a SLAM algorithm for a robot moving in at least two dimensions.

Required course materials:

There are no required texts for this course; however, a supplementary reading you may find very
helpful is Probabilistic Robotics by Wolfram Burgard, Dieter Fox, and Sebastian Thrun. The book
provides much of the math and the derivations omitted in Sebastian’s lectures.
http://probabilistic-robotics.org/
Canvas is the primary website you will be using for this course ( https://gatech.instructure.com/ ).
Lectures and problem sets will be accessed via Canvas in the Modules and Assignments pages,
respectively.

Grading policy:

Your overall course grade will be calculated from your weighted scores on the following deliverable
items:

6 problem sets and a Syllabus Quiz (18% total)
(Problem set 0 is ungraded and for practice only.)
•PID Mini-Project (7%)
•Kalman Filter, Particle Filter, Path Search, Policy Search & SLAM Projects (11% each)
•Midterm & Final Exam (20%)
•Extra Credit Opportunities: Worried you might end up right below a grade cutoff line?
You can earn a small amount of extra credit in several ways, including:
◦ Participating in optional hardware & research challenge assignments.
◦ Exceptional participation and helpfulness on Ed Discussion throughout the semester.
Extra credit will be taken into consideration at the end of the semester if you are within two
points of the threshold for the next higher letter grade. The maximum possible bump is 2% of
your total course grade. Note that to achieve the maximum possible (2%) bump, you will need
to do either all the hardware challenges OR all of the research challenges, as well as some Ed
Discussion Participation. Alternatively, you can do ½ of the hardware challenges AND ½ of the
research challenges as well as some Ed Discussion Participation to receive the full credit.
Assignments and Problem Sets are posted in Canvas using the Assignments tool, but you will submit
all work using the Gradescope online-autograder tool (linked from Canvas). See the course guidelines
document for more details. Note that you will receive no credit or grade for any work submitted to the
free Udacity course.
We will post grades using the Grades tool in Canvas. We will do our best to return grades to you as
quickly as possible. We ask that if you have a concern about a grade received to please notify us via a
private post on Ed Discussion within one week of receipt.

The minimum required percentage scores (we do NOT round up) for course letter grades are:
•A: 90.00%
•B: 80.00%
•C: 70.00%
•D: 60.00%
If circumstances warrant, the instructor may lower these grade cutoffs (that is, make them more
favorable to your grade) at the end of the semester, although we typically do not need to do this.

Attendance policy:

None.

Academic honesty/integrity statement:

Students are expected to maintain the highest standards of academic integrity. All work submitted must be original and properly cited. Plagiarism, cheating, or any form of academic dishonesty will result in immediate consequences as outlined in the university's academic integrity policy.

Georgia Tech aims to cultivate a community based on trust, academic integrity, and honor. Students are
expected to act according to the highest ethical standards. For information on Georgia Tech's Academic
Honor Code, please visit https://catalog.gatech.edu/policies/honor-code/ or
https://catalog.gatech.edu/rules/18/.
We will report all incidents of suspected dishonesty to the Office of Student Integrity (OSI). Please
refer to the Course policy guidelines document for further details. We actively scan project submissions
with automated means to detect cases of plagiarism or unauthorized collaboration.

Instructor First Name:
Jay
Instructor Last Name:
Summet
Section:
O01
CRN (you may add up to five):
26532
29949
Department (you may add up to three):