[ news | information | syllabus | labs | links ]

Introduction to Computer Science (CSCI 051)

Lectures: MWF 10-10:50 and MWF 11-11:50 in Edmunds 114
Lab: R 1:15-4 and F 1:15-4 in Edmunds 219 and 229

Instructors: Yi Chen and Katya Mkrtchyan

head TAs: Natalie Casey and Juan Zamudio

TAs: Lucas Dos Santos, Kevin Lee, Paul Mesa, Mark Penrod, Alan Peral Ortiz, Adam Rees, Evelyn Romero, Somto Uzoegwu, Jia Xi Wu


News

We will be using piazza for posting information and for answering questions, so please make sure you're signed up for this class on piazza.

Information

Computer Science 051 is an introduction to algorithm development emphasizing object-oriented design. Algorithms will be implemented as programs in the Java programming language. We will introduce data structures and recursion as tools to construct correct, understandable, and efficient algorithms. These topics will be developed further in CSCI 052, CSCI 062, and more advanced computer science courses.

By the end of this course you should have a good basic understanding of how to develop (design, code, and debug) medium-sized programs in Java, and have a basic understanding of how one might analyze programs for correctness and efficiency.

This course is a prerequisite for all upper level Computer Science courses. In this course we do not assume that you have had any previous computer programming experience. If you have had extensive previous experience you might consider taking cs52 instead. Please discuss this with any member of the department's faculty if you feel you fall into this category. The required textbook for the class is the Java: An eventful approach, by Kim Bruce, Andrea Danyluk, and Tom Murtagh. We've placed an order for the book at Huntley bookstore so you should be able to find it there.

Syllabus

Any topics or assignments that are listed for dates in the future should be taken as (potentially very) tentative. Anything for a date at least 2 days in the past will accurately reflect what actually happened in the class.

The readings are to be done for that day's lecture. The book problems are to be done after that day's lecture (i.e. you should be ready to discuss them in the following lecture).

Week Date In class Readings for class Book problems Assignments due
1 (Wed) 1/18 introduction
java basics, graphics, event handling
lab 1
1.9.3
(Fri) 1/20 instance variables, methods, parameters Ch 1, 2 1.6.2, 2.7.2
(Lab) 1/19-20 lab 1 - no clicking
2 (Mon) 1/23 parameters, variables
numbers, constants
Ch 2, 3 2.7.7, 3.11.2, 3.11.5 lab 1 due 11PM
(Wed) 1/25 conditionals, booleans
lab 2
lab 2 handout
Ch 3, 4
4.2.2
(Fri) 1/27 more conditionals
colors, random numbers
Ch 4 4.8.8
(Lab) 1/26-27 lab 2 - laundry design for part 1 of lab 2
3 (Mon) 1/30 primitive types
classes, constructors
Ch 5 5.7.2, 5.7.6 lab 2 due 11PM
(Wed) 2/1 classes, constructors
methods, parameters, variables
lab 3
lab 3 handout
Ch 6
6.8.4, 6.9.1
(Fri) 2/3 methods, parameters, variables Ch 6, 8 8.6.2, 8.6.3
(Lab) 2/2-3 lab 3 - lightballoon design for part 1 of lab 3
4 (Mon) 2/6 more on methods, parameters, variables
(Wed) 2/8 control structures Ch 7 7.2.1, 7.10.1 lab 3 due 11PM
(Fri) 2/10 active objects lab 4
Ch 9.1-9.2
9.10.1, 9.10.2
(Lab) 2/9-10 lab 4 - boxball design for lab 4
5 (Mon) 2/13 more active objects
more complex loops
Ch 9.3-9.5 9.10.3, 9.11.1
(Wed) 2/15 even more active objects Ch 9.6-9.9 9.11.2
(Fri) 2/17 interfaces, design
lab 5
Ch 10, 21 10.5.2, 21.9.2 lab 4 due 11PM
(Lab) 2/16-17 continue working on boxball
6 (Mon) 2/20 interfaces, review Ch 10 10.5.1
(Wed) 2/22 *** midterm ***
(Fri) 2/24 GUI components Ch 11.1-11.3 11.9.1
(Lab) 2/23-24 lab 5 - frogger design for lab 5
7 (Mon) 2/27 GUI components Ch 11.1-11.3 11.9.2 , 21.9.3
(Wed) 3/1 test program 1
GUI components
Ch 11.7-11.8 lab 5 due 11pm
(Fri) 3/3 inheritance Ch 17.1-17.5 17.5.1, 17.8.5
(Lab) 3/2-3 tp1-problem 1 and lab 6 (GUIs)
8 (Mon) 3/6 recursion Ch 12.1 12.1.10 lab 6 due 11PM
(Wed) 3/8 lab 7
more recursion
Ch 12.1 12.1.12
(Fri) 3/10 even more recursion Ch 12.2 tp1 - problems 2, 3 due 4pm
(Lab) 3/9-10 lab 7 - recursion
(Mon) 3/13
*** No class - spring break ***
(Wed) 3/15
*** No class - spring break ***
(Fri) 3/17
*** No class - spring break ***
9 (Mon) 3/20 for loops, arrays Ch 13 13.6.2, 13.6.5 lab 7 due Tuesday 11pm
(Wed) 3/22 lab 8
more arrays
Ch 14.1-14.5 14.2.2
(Fri) 3/24 still more arrays Ch 14.6-14.8 14.9.3
(Lab) 3/23-24 lab 8 - simon
10 (Mon) 3/27 multidimensional arrays Ch 14.6-14.8, 15.1-15.2 15.4.1, 15.4.2 lab 8 due Tuesday 11PM
(Wed) 3/29 multidimensional arrays
Ch 14.6-14.8, 15.1-15.2 15.4.1, 15.4.2
(Fri) 3/31
*** No class - Cesar Chavez day ***
(Lab) 3/30-31
*** No lab - Cesar Chavez day ***
11 (Mon) 4/3 lab 9, review
(Wed) 4/5 *** midterm ***
(Fri) 4/7 strings Ch 16 16.5.3, 16.5.4
(Lab) 4/6-7 lab 9 - nibbles
12 (Mon) 4/10 more strings
lab 10
Ch 16.3-16.4 16.5.6 lab 9 due 11PM on 4/11
(Wed) 4/12 html
tp2
Ch 16
(Fri) 4/14 exceptions Ch 18 18.5.1, 18.9.1
(Lab) 4/13-14 lab 10 - strings
13 (Mon) 4/17 streams, File I/O Ch 19.1-19.3 19.7.2 lab 10 due 11PM
(Wed) 4/19 files, streams Ch 19.4 19.7.3
(Fri) 4/21 streams, networks Ch 19.4 19.7.3 design for TP2
(Lab) 4/20-21 no lab, consider working on Test Program 2 during lab time
14 (Mon) 4/24 streams Ch 19.5-19.6 lab 11 due 11PM
(Wed) 4/26 asymptotics, algorithms, sorting lab 12 handout
Ch 20
 
(Fri) 4/28 sorting, asymptotics Ch 20 20.3.4, 20.3.8
(Lab) 4/27-28 lab11 - pictionary
15 (Mon) 5/1 review session lab 11 due 11PM
(Wed) 5/3 searching, concurrency Ch 20 Test Program 2 due 4PM

Final exam time is at 9am on Monday 5/8 for the 11am section and at 9am on Friday 5/12 for the 10am section. See piazza post @183 for more information.

Programming Assignments

Useful information:

  • How to submit an Eclipse project to the dropbox
  • Lab 1 - NoClicking <html>
  • Lab 2 - Laundry <html>
  • Lab 3 - LightBalloon <html>
  • Lab 4 - Boxball <html>
  • Midterm Sample <pdf> Skip problem 1
  • Midterm Sample solutions<pdf> Skip problem 1
  • Lab 6 - Textplay <html>
  • Test Program 1 Overview<html>
  • Lab 7 - Recursion <html>
  • Lab 8 - Simon <html>
  • Final Sample <pdf>
  • Lab 9 - Nibbles <html>
  • Lab 10 - Strings <html>
  • Test Program 2 <html>
  • Lab 11 - Pictionary <html>
  • Grade distribution

    Final grades will be determined by grades on labs, test programs, the midterm, and the final.

    WorkProportion
    Laboratory programs25% for 12 labs
    Test program 115% for 3 problems
    Test program 225%
    Midterms20% for 2 midterms
    Final exam15%

    Links

    The following documents provide information on the standard Java libraries and the additional libraries we have developed for this course:


    "Computers do not solve problems, they execute solutions"
    --Laurent Gasser

    Introduction to Computer Science - Spring 2017