CS 1331
CS 1331 is a 3 credit hour CS class with no lab and an optional recitation. It is taken by all CS majors, as well as a few other majors.
Overview
[No official Course page]
Topic List
CS 1331 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.
- Introduction to Java
- Variables, Data Types, and Arithmetic
- Objects
- Loops, Control Flow, and Decision Making
- Arrays
- Methods
- Classes and Object-Oriented Programming
- Inheritance and Polymorphism
- Interfaces
- Basic Sorting Algorithms and Introduction to Big-O
- File I/O and Exception Handling
- ArrayLists and LinkedLists
- Recursion
- JavaFX and GUI Programming
How it fits in the curriculum
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 CS 1331 as either a direct prerequisite or require a class that has CS 1331 as a prerequisite. It is thus very important to take this course as early as possible.
Current Registration Info
CS 1331 is NOT a linked course. You thus only need to register for a lecture section (e.g. A, B, C).
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.
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.
Prerequisites
At least one of the following:
- C or Higher in CS 1301
- C or Higher in CS 1315
- C or Higher in CS 1371
Majors That Require This Class
- Computer Science
- Computer Engineering
- Computational Media
- Mathematics
Resources
CS 1331 2019 Website
CS 1331 Spring 2021 Section A Website
Full Topics List
- Java Introduction
- Object Oriented Programming
- Syntax vs Semantics
- Interpreted vs Compiled
- What is a class
- Comments
- Compilation Process
- Variables & Assignment
- Identifiers
- Variables
- Constants
- Literals
- Numeric
- Strings
- Expressions
- Order of Operations
- Classes and Objects
- Encapsulation
- Instance Methods
- Overriding
- 'this' operator
- scope of variables
- visibility modifiers
- public
- private
- protected
- default (package private)
- getters and setters
- 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
- Branching
- Packages and Built In Classes
- Random Class
- Math Operations
- Enumerations
- Static
- Methods
- Variables
- Arrays
- 1 Dimensional
- 2 Dimensional
- Multi Dimensional
- Checkstyle / Coding Conventions
- null reference
- Wrapper Classes
- Abstract Classes and Interfaces
- Hierarchies
- Polymorphism & Dynamic Binding
- Comparable
- Exceptions and Error Handling
- File I/O
- Generics
- ArrayLists
- Asymptotics and Big-O
- Searching and Sorting
- Recursion
- JavaFX
- Concepts, Graphics and Shapes
- Event Driven Programming
- Layout
- Mouse & Key Events
- GUI Controls
- ADTs
- Sets
- Java Collections
- Hashing
- Lists, Linked Lists
- Iterable
- Class Design and Interaction
- Software Design & Development [Optional]
- Testing, Debugging and IDEs
- JavaDocs & Creating your own packages