Editing CS 1331

From Georgia Tech Student Wiki

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.

Latest revision Your text
Line 1: Line 1:
  +
== Overview ==
{{DISPLAYTITLE:CS 1331 - Introduction to Object-Oriented Programming}}
 
  +
[No official Course page]
[[Category:Courses|^CS^CS]]
 
   
  +
==== Topic List ====
'''CS 1331''', formally known as '''Introduction to Object-Oriented Programming''', is a 3-credit Computer Science class taken as a core requirement for College of Computing and Computer Engineering majors. It provides a detailed overview of programming using the Java programming language, going over syntactical details and computing principles not inherent with an extremely high-level programming language such as Python. It is immediately preceded by [[CS 1301]], and immediately succeeded by [[CS 1332]], [[CS 2110]], and [[CS 2340]].
 
  +
CS 1331 basically focuses on Java Programming semantics, a very brief introduction to Data Structures & Algorithms, and also looks into JavaFx basics. The course is slightly fast-paced, but enough time, resources, and attention is given to students who do not have a background in programming to grasp the concepts.
   
  +
# Java Introduction
== Workload ==
 
  +
## Object Oriented Programming
Like most 1000-level CS classes, CS 1331 primarily consists of homework assignments and a set of exams. Some classes also have a participation component.
 
  +
## Syntax vs Semantics
 
  +
## Interpreted vs Compiled
Homework assignments are non-practical (yet useful) programming exercises that allow the student to apply Java and OOP principles taught in class. A selection of the later homework assignments go over implementations of simple data structures and exceptions.
 
  +
## What is a class
 
  +
## Comments
Exams test knowledge of Java syntax through multiple choice, fill-in-the-blank, matching, and free response questions. Due to the nature of the class and how it attempts to assess Java knowledge, exams are known to be a bit on the pickier side and are generally not forgiving.
 
  +
## Compilation Process
 
  +
# Variables & Assignment
{{Collapsed|
 
  +
## Identifiers
== Topic List ==
 
  +
## Variables
|
 
  +
## Constants
As of Spring 2021, the topic list is as follows:
 
  +
## Literals
 
  +
##* Numeric
# Introduction to Java
 
  +
##* Strings
## History of Java
 
  +
# Expressions
## Java, the JVM, and Compilation Styles
 
  +
#* Order of Operations
# Variables, Data Types, and Arithmetic
 
  +
# Classes and Objects
## Static vs. Dynamic Variables
 
  +
## Encapsulation
## Primitive Data Types
 
  +
## Instance Methods
## Primitive Data Type Operations
 
  +
## Overriding
# Objects
 
  +
## 'this' operator
## Reference Data Types
 
  +
## scope of variables
## Java's Built in Objects
 
  +
## visibility modifiers
# Loops, Control Flow, and Decision Making
 
  +
##* public
## Simple Boolean Logic
 
## For Loops
+
##* private
  +
##* protected
## While Loops
 
  +
##* default (package private)
## If/Else Statements
 
  +
## getters and setters
## Switch Statements
 
  +
## Constructors
  +
##* Default Constructors
  +
##* Creating Constructors
  +
##* Parameterized Constructors
  +
##* Constructor Overloading
  +
##* Constructor Chaining
  +
##* Copy Constructor
  +
##*# Shallow Copy
  +
##*# Deep Copy
  +
## The Object Class
  +
## Object Equality
  +
## toString
  +
## hashCode
  +
# Command Line
  +
## Command Line Output
  +
## Command Line Input
  +
# Program Control Flow
  +
#* Branching
  +
#*# Conditionals: if, else if, else ladders
  +
#*# Logical Operations
  +
#*# Logical Operator Precedence
  +
#*# Ternary Operator
  +
#*# Switch
  +
#* Iteration
  +
#*# for Loop
  +
#*# while Loop
  +
#*# Continue and Break
  +
#*# do-while loop
  +
# Packages and Built In Classes
  +
## Random Class
  +
## Math Operations
  +
# Enumerations
  +
# static
  +
#* methods
  +
#* variables
 
# Arrays
 
# Arrays
  +
#* 1 Dimensional
## The Array Object
 
  +
#* 2 Dimensional
## 1D Arrays
 
  +
#* Multi Dimensional
## 2D Arrays
 
  +
# Checkstyle / Coding Conventions
# Methods
 
  +
# null reference
## The Main Method
 
  +
# Wrapper Classes
## Writing Static Methods
 
  +
# Abstract Classes and Interfaces
## String[] args explained
 
## Overloading
+
## Heirarchies
  +
## Polymorphism & Dynamic Binding
# Classes and Object-Oriented Programming
 
  +
## Comparable
## What is OOP?
 
## Classes and Objects
+
# Exceptions and Error Handling
  +
# File I/O
## Writing Classes
 
  +
# Generics
## Static vs. Non-Static Methods
 
  +
# ArrayLists
# Inheritance and Polymorphism
 
  +
# Asymptotics and Big-O
## Inheritance
 
  +
# Searching and Sorting
## Inheritance Hierarchies
 
## Abstract Classes
 
## Overriding
 
## Polymorphism
 
## Dynamic Binding
 
# Interfaces
 
## Interfaces
 
## Interfaces vs. Abstract Classes
 
## Multiple Inheritance with Interfaces
 
# Basic Sorting Algorithms and Introduction to Big-O
 
## Introduction to Algorithms
 
## Linear Search
 
## Binary Search
 
## Selection Sort
 
## Insertion Sort
 
## Merge Sort
 
## Naive Big-O
 
# File I/O and Exception Handling
 
## Reading and Writing from Files
 
## Exceptions and the Exceptions Class
 
## Types of Exceptions
 
## Errors
 
## Writing Exceptions
 
# ArrayLists and LinkedLists
 
## The List ADT
 
## ArrayLists
 
## LinkedLists
 
 
# Recursion
 
# Recursion
# JavaFX and GUI Programming
+
# JavaFX
  +
## Concepts, Graphics and Shapes
## What is JavaFX?
 
  +
## Event Driven Programming
## GUI Programming Overview
 
  +
## Layout
## Writing Graphical Programs
 
  +
## Mouse & Key Events
## Private Inner Classes
 
  +
## GUI Controls
## Lambda Expressions
 
  +
## ADTs
}}
 
  +
##* Sets
  +
##* Java Collections
  +
##* Hashing
  +
##* Lists, Linked Lists
  +
##* Iterable/ Iterators
  +
# Class Design and Interaction
  +
# Software Design & Development [Optional]
  +
# Testing, Debugging and IDEs
  +
# JavaDocs & Creating your own packages
   
  +
==== How it fits in the curriculum ====
== Prerequisite Knowledge ==
 
  +
The course not only touches upon the Java Programming language (3rd most popular according to Stack Overflow), but also introduces many fundamental programming concepts that are universal for any programming language. The course also focuses on Object Oriented Design and JavaFX, which will be emphasized in CS 2340, and also touches ADTs, and Searching & Sorting, which will be built on in CS 1332.
   
  +
Most future CS courses have 1331 as either a direct or indirect prerequisite.
=== Programming ===
 
As CS 1331's direct prerequisite is CS 1301, CS 1301 expects basic programming skills in any language. Emphasis is placed on knowing basic programming concepts such as functions, variables, loops, and decision making. While CS 1331 does go over these topics in the context of Java, it does go over it at a much brisker pace.
 
   
== Future Outlook ==
+
== Current Registration Info ==
  +
This is a [[linked course]]. You must register for a lecture section (e.g. A, B, C) ''and'' a corresponding recitation section with the same section but with the 1331R course number (e.g. lecture section: 1331 A will have recitation section 1331R A).
CS 1331 is one of the most important classes for CS majors. It serves as a prerequisite for CS 1332, which is an important core CS class, CS 2110, the first class of the Systems and Architecture Thread chain, and CS 2340, another important core CS class. Many of these classes are even more embedded in longer prerequisite chains for other threads, and thus, completing CS 1331 as soon as possible is critical.
 
   
  +
The course also has a placement test that you can take before the semester begins to test out.
Computer Engineers, while not having many classes that use CS 1331 as a prerequisite, still need to take CS 1331 as soon as possible, especially if they decide to select a CS thread.
 
   
  +
=== Prerequisites ===
== Current Registration Info ==
 
  +
At least one of the following:
CS 1331 is NOT a [[linked course]]. You thus only need to register for a lecture section (e.g. A, B, C).
 
   
  +
* C or Higher in CS 1301 or,
However, there exists an optional second component: [[Recitation]]. You have the option (although its strongly recommended) to register for a corresponding recitation section with the same section but with the 1331R course number (e.g. lecture section: 1331 A will have recitation section 1331R A01, A02, etc.). The recitation is optional, but since attendance is voluntary, it is recommended that you sign up for it.
 
  +
* C or Higher in CS 1315 or,
  +
* C or Higher in CS 1321 or,
  +
* C or Higher in CS 13761
   
  +
=== Majors That Require This Class ===
The course also has a placement test that you can take before the semester begins to test out, known as an ASE. The College of Computing will have more details every July, October, and March about this exam.
 
 
=== [https://oscar.gatech.edu/bprod/bwckctlg.p_disp_course_detail?cat_term_in=202108&subj_code_in=CS&crse_numb_in=1331 Prerequisites] ===
 
At least one of the following:
 
   
* 4 or Higher on the AP Computer Science A Exam
+
* Computer Science
  +
* Computer Engineering
* C or Higher in CS 1301
 
* C or Higher in CS 1315
 
* C or Higher in CS 1371
 
   
 
== Resources ==
 
== Resources ==
[https://cs1331.org <s>CS 1331 2019 Website</s>] (Unavailable)<br />
+
[https://cs1331.org <nowiki>CS 1331 2019 Website</nowiki>] <br />
 
[https://classes.cc.gatech.edu/AY2021/cs1331a_spring/index.html <nowiki>CS 1331 Spring 2021 Section A Website</nowiki>]
 
[https://classes.cc.gatech.edu/AY2021/cs1331a_spring/index.html <nowiki>CS 1331 Spring 2021 Section A Website</nowiki>]

Please note that all contributions to Georgia Tech Student Wiki are considered to be released under the Creative Commons Attribution-ShareAlike (see GT Student Wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

Cancel Editing help (opens in new window)

Template used on this page: