Computer Science
CSC3440
Introduction to Computer Science II

This course is a continuation of CS101: Introduction to Computer Science I. It will introduce you to a number of more advanced Computer Science topics, laying a strong foundation for future academic study in the discipline. We will begin with a comparison between Java, the programming language used in the previous course, and C++, another popular, industry-standard programming language. We will then discuss the fundamental building blocks of Object-Oriented Programming, reviewing what we have already learned and familiarizing ourselves with some more advanced programming concepts. The remaining course units will be devoted to various advanced topics, including the Standard Template Library, Exceptions, Recursion, Searching and Sorting, and Template Classes. By the end of the class, you will have a solid understanding of Java and C++ programming, as well as a familiarity with the major i

Computer Science II Stud...

These are study guides related to Introduction to Computer Science II.

items (7)
Password:
DOCUMENT

Study Guide and Review: C++ and Java

DOCUMENT

Study Guide and Review: The Building Blocks of Obj...

DOCUMENT

Study Guide and Review: C++ Standard Template Libr...

DOCUMENT

Study Guide and Review: Exceptions

DOCUMENT

Study Guide and Review: Recursion

DOCUMENT

Study Guide and Review: Searching and Sorting

DOCUMENT

Study Guide and Review: Template Programming

Unit I "C++ and Java"

This course will employ both Java and C++, another industry-standard programming language. In this unit, we will outline the similarities and differences between these two languages, noting how each is used in the industry. We will also take an in-depth look at the history, importance, and functionality of C++ and compare the basic building blocks of each language in order to draw a distinction between the two and further acquaint you with both languages.

items (8)
Password:
DOCUMENT

Compatibility of C and C++

DOCUMENT

C Programming Language History

DOCUMENT

Ruby for Beginners: Object-oriented programming

DOCUMENT

The Rook's Guide to C++ History

DOCUMENT

Introduction to Programming Using Java: Overview: ...

DOCUMENT

Introduction to C++

DOCUMENT

C++/Classes and Inheritance

VIDEO

C++ vs. Java: Code to Executable

Unit 2: The Building Bloc...

Now that you are familiar with both C++ and Java, you are ready to explore more advanced topics in Object-Oriented (OO) Programming. We will begin by discussing the motivation behind programming with objects, learning the essential characteristics of OO Programming languages and identifying the advantages and disadvantages of various major programming frameworks. The unit will also provide a general history of OO Programming and, finally, review major characteristics of OO Programming. By the end of this unit, you will be able to discuss different programming paradigms and identify the main properties of OO Programming.

items (9)
Password:
DOCUMENT

Objects and Classes

DOCUMENT

Understanding Classes and Object in Java Activity

DOCUMENT

Understanding Classes and Objects in Java Quiz (An...

DOCUMENT

Objects and Classes Quiz

DOCUMENT

Understanding Inheritance in Java Quiz

DOCUMENT

Understanding Inheritance in Java (Answer Key)

WEB RESOURCE

Lecture 1: Object-Oriented Programming

DOCUMENT

Functional Programming in Python

DOCUMENT

Prolog, Logic Programming and Programming Paradigm

Unit 3: C++ Standard Temp...

Nearly every C++ programmer uses the C++ Standard Template Library (STL), a powerful and highly useful library of generic-typed data structures and algorithms. In this unit, we will learn how and why the STL was originally developed. The unit will also introduce you to the history and basics of templates and generic programming before presenting the structures (Containers, Iterators, and Functors) and algorithms that the Standard Template Library contains. By the end of this unit, you will be familiar with the STL, its uses, and its structures and algorithms.

items (8)
Password:
WEB RESOURCE

Lecture 8: Complexity: Log, Linear, Quadratic, Exp...

DOCUMENT

Ada Programming/Generics

DOCUMENT

Composing Programs: Object-Oriented Programming

WEB RESOURCE

Basics of Information Video

WEB RESOURCE

The Digital Abstraction Video

DOCUMENT

The Rook's Guide to C++: Chapter 23 STL

DOCUMENT

Standard Template Library

DOCUMENT

Function Object

Unit 4: Exceptions

A programmer must ensure the safe execution of his or her code. In other words, if an error occurs, the program should present the user with relevant information and then quit gracefully. The built-in C++ structures used to accomplish this goal are known as "Exceptions." This unit will introduce you to the concept of throwing and catching Exceptions when something goes wrong with your software, explain how they are used in both C++ and Java, and teach you how to handle them. By the end of this unit, you will be able to write safe programs designed to perform gracefully when/if errors occur.

items (7)
Password:
DOCUMENT

Introduction to Correctness and Robustness

DOCUMENT

Benefits of Exceptions and Writing Correct Program...

VIDEO

Handling Exceptions

DOCUMENT

Exceptions in Java programming language

DOCUMENT

Java Error Handling

DOCUMENT

Exceptions and try..catch

DOCUMENT

C++ Programming: Exception Handling

Unit 5: Recursion

Often considered one of the more conceptually difficult concepts within the field of Computer Science, recursion - the act of a function invoking itself - is a powerful and relevant tool for any Computer Scientist. In this unit, we will take an in-depth look at recursion, learning the recursive steps, the role that recursion plays in common data structures, and what happens inside the computer when a recursion function is invoked. By the end of this unit, you will recognize situations that require recursion and be able to apply it appropriately. Note: Recursion can be a difficult concept for some students new to the field of Computer Science. This anxiety is best resolved through the use of an example. For this module, we will employ the use of recursion to write a program to express the "factorial" function. This straightforward example will give the student an overview of all the maj

items (12)
Password:
VIDEO

Stepping Through Recursive Fibonacci Function

VIDEO

Stepping Through Iterative Fibonacci Function

WEB RESOURCE

Lecture 6: Recursion

DOCUMENT

Section 1: Sequences and Series: Recursive Definit...

VIDEO

Recursive Factorial Function

DOCUMENT

Reading 10: Recursion

DOCUMENT

Tail-Recursive Functions

WEB RESOURCE

Video: Divide and Conquer Methods, Merge Sort, Exc...

DOCUMENT

Programming via Java: Recursion

VIDEO

Exercise - Write a Fibonacci Function

VIDEO

Iterative Fibonacci Function Example

VIDEO

Recursive Fibonacci Example

Unit 6: Searching and Sor...

As a computer programmer, you will need to know how to search and sort data. This will require you to leverage what you have learned in a number of different Computer Science areas, drawing from your introduction to data structures and algorithms in particular. In this unit, we will identify the importance of searching and sorting, learn a number of popular searching and sorting algorithms, and determine how to analyze and appropriately apply them. By the end of this unit, you will recognize instances in which you need a searching or sorting algorithm and be able to apply one efficiently.

items (16)
Password:
WEB RESOURCE

Lecture 8: Complexity: Log, Linear, Quadratic, Exp...

WEB RESOURCE

Lecture 4: Quicksort, Randomized Algorithms

WEB RESOURCE

Lecture 9: Memory and Search Methods

WEB RESOURCE

Lecture 12: Search Algorithms

WEB RESOURCE

Video: Divide and Conquer Methods, Merge Sort, Exc...

WEB RESOURCE

Lecture 9: Binary Search, Bubble and Selection Sor...

DOCUMENT

Linked List

DOCUMENT

Recursive Data Structures

DOCUMENT

Basic Tree Traversals

VIDEO

Exercise - Write a Sorting Function

VIDEO

Insertion Sort Algorithm

VIDEO

Insertion Sort in Python

VIDEO

Stepping Through Insertion Sort Function

VIDEO

Simpler Insertion Sort Function

DOCUMENT

Radix Sort

VIDEO

Big Oh Notation

Unit 7: Template Programm...

In Unit 3, we discussed the C++ Standard Template Library and introduced the concept of template programming. In this unit, we will further explore both templates and generic programming, cultivating a broader understanding of the topic. We will begin with a review of the STL and a discussion of the motivation behind template development. We will then discuss templates in a more generic fashion, referring back to the STL where necessary, and take a look at how templates are utilized within Java, comparing and contrasting with the C++ STL. By the end of this unit, you will recognize the importance of templates, be able to identify when they are needed, and know how to apply them efficiently.

items (9)
Password:
DOCUMENT

Generic Programming

DOCUMENT

Lists and Sets

DOCUMENT

Understanding and Creating TreeSets in Java Practi...

DOCUMENT

Understanding and Creating TreeSets in Java (Answe...

DOCUMENT

Understanding and Creating HashSets in Java Practi...

DOCUMENT

Understanding and Creating HashSets in Java (Answe...

DOCUMENT

Introduction to C Memory Management

DOCUMENT

C++ Object-Oriented Programming

WEB RESOURCE

Introduction to C++ MIT OCW