Computer Science I – Honors

CSCE 155H & RAIK 183H

Fall 2017

Syllabus

Details on the policies, grading, expectations, etc. for this course can be found in the course syllabus.

Venue

CSCE 155H

  • TR 11:00AM – 12:15PM, Avery 119
  • Lab: W 2:30PM – 3:45PM, Avery 20
  • Hack Session: Tuesdays 10AM – 11AM Avery 347

RAIK 183H

  • MWF 9:30 – 11:20AM Kauffman 110
  • Hack Session: Wednesdays 7PM–11PM, Kauffman (TBD)

Instructors

Dr. Chris Bourke
cbourke@cse.unl.edu
Avery 363
Office Hours: M–R 12:30PM – 1:30PM

Dr. Stephanie Valentine
valentine@unl.edu
Kauffman 144
Office Hours: TBD

Teaching Assistants

CSCE 155H
  • Natalie Hanisch nhanisch@cse.unl.edu (GTA)
    Office Hours: W 12:30PM – 1:30PM
  • Riley Jhi: T 3:30PM – 5PM & F Noon – 3PM
  • Chris Luth: TR 3:30 – 5:30PM and W 3:45 – 6PM
  • Alec Schneider: M & F 10:00AM – Noon
RAIK 183H
  • Joe Abolt
  • Allison Inman
  • Reid Jones
  • Karl Shaffer
Week Dates Topics – 155H Topics – 183H Lab Required Reading Notes
1 August 21 – 25
  • T: Course Introduction, Getting Started
  • R: C/Java Basics
  • M: Course Introduction, Getting Started
  • W: Lab 01
  • F: C/Java Basics
Lab 01: Introduction
2 August 28 – September 1st
  • T: C/Java Basics
  • R: Conditionals
  • M: C/Java Basics
  • W: Lab 02
  • F: Conditionals
Lab 02: Data Types
3 September 4 – 8
  • T: Conditionals
  • R: Loops
  • M: No Class (Labor Day)
  • W: Lab 03
  • F: Loops
Lab 03: Conditionals Assignment 1 due
4 September 11 – 15
  • T: Functions & Modularity
  • R: Pointers/Pass By Reference
  • M: Functions & Modularity
  • W: Lab 04
  • F: Collaboration, Pointers, Pass By Reference
Lab 04: Loops
  • CS1: Chapters 5–6, 18–19, 29–30
5 September 18 – 22
  • T: Error Handling in C
  • R: Exceptions in Java
  • M: Hack Session
  • W: Lab 05
  • F: Error Handling
Lab 05: Functions/Methods
6 September 25 – 29
  • T: Hack Session
  • R: Arrays
  • M: Error Handling
  • W: Lab 06
  • F: Arrays
Lab 06: Functions, Enums
  • CS1 Chapters 7, 20, 31
Assignment 2 due
7 October 2 – 6
  • T: Arrays
  • R: Strings
  • M: Arrays & Dynamic Collections
  • W: Lab 07
  • F: No Class - Raikes Board Meeting
Lab 07: Arrays & Dynamic Memory
8 October 9 – 13
  • T: Midterm Review
  • R: Midterm
  • M: Midterm Review
  • W: Lab 08
  • F: Midterm
Lab 08: Debugging Assignment 3 due
9 October 16 – 20
  • T: No Class (Fall Break)
  • R: (String Processing, File I/O)
  • M: No Class (Fall Break)
  • W: Lab 09
  • F: (String Processing, File I/O)
Lab 09: Strings
  • CS1: Chapters 8, 21, 32
10 October 23 – 27
  • T: (File I/O)
  • R: (Encapsulation: Structures)
  • M: (File I/O)
  • W: Lab 10
  • F: (Encapsulation: Structures)
Lab 10: File I/O
  • CS1: Chapters 9, 22, 33
11 October 30 – November 3
  • T: (Encapsulation: Objects)
  • R: (Recursion)
  • M: (Encapsulation: Objects)
  • W: Lab 11
  • F: (Recursion)
Lab 11: Structures/Objects
  • CS1: Chapters 10, 23, 34
Assignment 4 due
12 November 6 – 10
  • T: (Searching)
  • R: (Sorting)
  • M: (Searching)
  • W: Lab 12
  • F: (Sorting)
Lab 12: Recursion
13 November 13 – 17
  • T: (Sorting)
  • R: (Pad)
  • M: (Sorting)
  • W: Lab 13
  • F: (Pad)
Lab 13: Searching & Sorting
Assignment 5 due
14 November 20 – 24
  • T: (GUI)
  • R: No Class
  • M: (GUI)
  • W: No Class
  • F: No Class
15 November 27 – December 1
  • T: (GUI)
  • R: (Databases)
  • M: (GUI)
  • W: Lab 14
  • F: (Databases)
Lab 14: GUI
16 December 4 – 8
  • T: (Databases)
  • R: Review
  • M: (Databases)
  • W: Lab 15
  • F: Review
Lab 15: Databases Dead Week
Assignment 6 due
Assignment 7 (bonus) due
17 December 12 – 16 Final Exam: 155H: Monday, December 11; 3:30 – 5:30PM Final Exam: 183H: Tuesday, December 12; 10:00AM – 12 Noon Finals Week

Course Resources

Software

  • Eclipse
  • GitHub
  • Putty – a free SSH client to connect to CSE
  • FileZilla – a free FTP client to transfer files
  • Notepad++ – a free text editor with code markup
  • Cygwin – get a linux feel and tools for compiling C in windows
  • Code::Blocks – an all-in-one, extensible IDE for C/C++

Lecture Notes

Course Introduction
Language Basics
Conditionals
Loops
Functions, Methods, Modularity
Error Handling, Enumerated Types
Arrays & Dynamic Memory
Strings
File Processing
Encapsulation: Objects, Structures
Recursion
Searching & Sorting
GUI & Event Driven Programming
Intro to Databases

Computer Science I – C

(CSCE 155E, CSCE 155H, RAIK 183H)

Lab 01 – Introduction, Gettings Started

An introduction to the lab environment and tools needed to develop, compile, and execute a program. Includes step-by-step instructions for checking out starter code from GitHub.

Lab 02 – Data Types

An introduction to variables and primitive data types supported by the language. Basic variable usage and mathematical expressions.

Lab 03 – Conditionals

An introduction to conditional statements as well as logical operators and logical expressions.

Lab 04 – Loops

An introduction to basic loop control structures including for and while loops. Applications of loops to solve problems.

Lab 05 – Functions

An introduction to functions, procedural abstraction, and modularity. Defining and using functions to solve problems. Functions as code reuse.

Lab 06 – Functions, Passing By Reference, and Enumerated Types

Introduction to using pass-by-reference variables in functions to communicate values. Code organization and modularity. Using error codes to achieve error handling and enumerated types to disambiugate code.

Lab 07 – Arrays & Dynamic Memory

An introduction to arrays, in particular dynamically allocated arrays. How to do proper memory management and the consequences of memory leaks. Basic usage of arrays, passing arrays to return arrays from functions.

Lab 08 – Debugging

An introduction to proper debugging techniques. Using debugging tools to set breakpoints and step through a program.

Lab 09 – Strings

An introduction to using and manipulating string data types. Using the standard string library functions to process strings.

Lab 10 – File Processing

An introduction files and file input/output. Processing files in both binary and text formats. Basic data formatting in text files including XML.

Lab 11 – Encapsulation & Structures

An introduction to encapsulation and creating structures. Advantages of grouping data together into one unit. Declaring and using structures in a program to solve problems.

Lab 12 – Recursion

An introduction to recursion and recursive functions. Pitfalls to using recursion and alternatives.

Lab 13 – Searching & Sorting

An introduction to basic searching and sorting algorithms and techniques. How to leverage built-in functions and libraries to search and sort. How to generalize and configure such algorithms to operate on different types of data; using comparators.

Lab 14 – Graphical User Interfaces & Event-Based Programming

An introduction to graphical user interface and event-based programming techniques. Creating and using basic widgets, user interface layout, enabling functionality by registering callbacks.

Lab 15 – Introduction to Database Connectivity

An introduction to database structures and connectivity. Data integrity issues. Inserting and retrieving data from a database through an API.

Computer Science I – Java

(CSCE 155H, RAIK 183H)

Lab 01 – Introduction, Gettings Started

An introduction to the lab environment and tools needed to develop, compile, and execute a program. Includes step-by-step instructions for checking out starter code from GitHub via Eclipse.

Lab 02 – Data Types

An introduction to variables and primitive data types supported by the language. Basic variable usage and mathematical expressions.

Lab 03 – Conditionals

An introduction to conditional statements as well as logical operators and logical expressions.

Lab 04 – Loops

An introduction to basic loop control structures including for and while loops. Applications of loops to solve problems.

Lab 05 – Methods

An introduction to methods, procedural abstraction, and modularity. Defining and using functions to solve problems. Methods as code reuse.

Lab 06 – Methods, Error Handling and Enumerated Types

Introduction to using exceptions for error handling, code organization and modularity. Using enumerated types to disambiugate code.

Lab 07 – Arrays & Dynamic Memory

An introduction to arrays, in particular dynamically allocated arrays. How to do proper memory management and the consequences of memory leaks. Basic usage of arrays, passing arrays to return arrays from methods.

Lab 08 – Debugging

An introduction to proper debugging techniques. Using debugging tools to set breakpoints and step through a program.

Lab 09 – Strings

An introduction to using and manipulating string data types. Using the standard string library functions to process strings.

Lab 10 – File Processing

An introduction files and file input/output. Processing files in both binary and text formats. Basic data formatting in text files including XML.

Lab 11 – Encapsulation & Objects

An introduction to encapsulation and creating objects. Advantages of grouping data together into one unit. Declaring and using objects in a program to solve problems.

Lab 12 – Recursion

An introduction to recursion and recursive functions. Pitfalls to using recursion and alternatives.

Lab 13 – Searching & Sorting

An introduction to basic searching and sorting algorithms and techniques. How to leverage built-in methods and libraries to search and sort. How to generalize and configure such algorithms to operate on different types of data; using comparators.

Lab 14 – Graphical User Interfaces & Event-Based Programming

An introduction to graphical user interface and event-based programming techniques. Creating and using basic widgets, user interface layout, enabling functionality by registering callbacks.

Lab 15 – Introduction to Database Connectivity

An introduction to database structures and connectivity. Data integrity issues. Inserting and retrieving data from a database through an API.