1
Object-oriented programming
and data-structures
Natacha Crooks
CS/ENGRD 2110
SUMMER 2018
Lecture 0: Overview
http://courses.cs.cornell.edu/cs2110/2018su
CS2110 (ENGRD 2110)
2
◻ Object-oriented Programming Principles
⬜ Reasoning about complex problems
◻ Algorithmic Principles
⬜ Algorithmic complexity, analysing algorithms
◻ Data structures
⬜ Linked lists, trees, hash tables, graphs, etc.
◻ Good programming practices
⬜ Testing tools, coding styles
Is CS2110 right for you?
3
◻ Knowledge of Java not required
⬜ Only ~30% of you know Java –others know Matlab, Python …
⬜ Requirement: comfort with some programming language, on the level of
CS1110 (Python based) and CS1112 (Matlab based).
Prior knowledge of OO not required.
⬜ We assume you do not know Java!
⬜ If you know Java, the first 3 weeks will be easier for you but you STILL
have to learn things, probably unlearn what you learned
Course Staff
4
Instructor Natacha Crooks
CS Undergrad -> Cambridge (UK)
PhD Student -> Cornell U. & UT Austin
Research Interests ->
Distributed Systems/ Databases
Teaching Assistants
Chris Mulvaney (Sophomore, ChemEng Major )
Juliet Zhong (Sophomore CS Major )
Hyun Kyo Jung (Junior CS Major )
Lectures and Office Hours
◻ TR 10:00-11.15 am, (in Hollister Hall 110)
⬜ Attendance mandatory
⬜ Send me an email if you can’t make it
⬜ Please ask questions!
◻ Office Hours ( in G13)
⬜ Natacha (nsc36) Every day 12-13
⬜ Hyun (hj283) Mon, Thur: 7-8pm
⬜ Juliet (lz246): Fri: 9-10 am
⬜ Chris (cmm435): Wed: 6-7pm
⬜ Avoid emails, come to OH -> we want to meet you!
Coursework
6
◻ 5-6 programming assignments (40 %)
◻ Final exam (30 %)
◻ Mid-class quiz (10 %)
◻ Daily Homeworks (14 %)
◻ Class Participation (5 %)
◻ Course evaluation (1 %)
Formula will change as course progresses and we make changes
in assignments, give quizzes, etc.
A word of warning!
7
◻ This is not a regular format for a class.
◻ Pace is intense. Don’t fall behind!
◻ Review and revise material every day!
◻ Strong support network. Ask for help early if you are struggling.
Rough Schedule
8
◻ Assignments Due on Wednesday 10 AM.
⬜ Released 1 week before.
◻ Short daily homeworks. Due next day 10 AM.
⬜ Help you learn the course as you go along
⬜ Warn us if you fall behind.
⬜ You will almost always get full credit. Don’t worry.
Course Websites
9
◻ CMS
⬜ Assignments & homeworks posted there.
⬜ Assignments must be submitted to CMS
◻ Piazza
⬜ Ask questions! Clarify misunderstandings
⬜ Students, TAs, Instructor will reply.
⬜ Post anonymously if necessary
◻ Should have received links to both. See me after class if not.
Assignments & Homeworks
10
◻ Assignments
⬜ 5-6 total. Teams of 2. Finding a partner: choose your own or contact your
TA. Piazza can be helpful.
⬜ Released once a week. Do not leave the assignment until the last
minute. Work on it a little every day!
◻ Homeworks
⬜ Daily and alone. To help you check that you understand the material.
◻ Grading policy: 3 points the first day, 4 the second, and 5 each day
thereafter
Academic Integrity… Trust but verify!
11
◻ 98% of you are honest and don’t try to cheat.
◻ We use artificial intelligence tools to check each homework assignment, so
catch the other 2%
⬜ Software is accurate! Tests your code and notices similarities between code
written by different people
◻ Sure, you can fool this software
⬜ … but it’s easier to just do the assignments and if you try to fool it and screw
up, you might fail the assignment or even the whole course
◻ If in doubt ASK!
Java Resources
12
◻ JavaHyperText.
⬜ Curated by Prof. Gries. Contains tutorials and explanations on most topics
in course.
⬜ http://www.cs.cornell.edu/courses/JavaAndDS/
◻ Java Documentation
⬜ online materials at Oracle JDK web site
⬜ https://docs.oracle.com/javase/8/
⬜ Tutorial (my favourite): https://docs.oracle.com/javase/tutorial/java/
◻ Textbooks
⬜ No Mandatory Textbooks
⬜ Thinking in Java 3rd Edition is quite good.
Obtaining Java and Eclipse
13
◻ Follow instructions on our Resources web page
⬜ Make sure you have Java JDK 1.8, if not download and install. We
explain how on the web page.
⬜ Then download and install the Eclipse IDE
◻ Test it out: launch Eclipse and click “new>Java Project”
⬜ This is one of a few ways Java can be used
⬜ When program runs, output is visible
in a little console window
Homework 0
14
◻ Come to one of my office hours this week to introduce yourself and say Hi.
◻ Rest of homework released on CMS.
◻ Install and run your first program in Eclipse.
◻ Due before tomorrow’s class 10 AM
Rough Course Outline
15
◻ First Week: Java Fundamentals and Object-Oriented Principles.
◻ Second Week: Testing and advanced Java features
◻ Third Week: Algorithmic Complexity & Analysis
◻ Fourth/Fifth Week: Data-structures (Linked Lists, Heaps, Trees, Graphs)
◻ Sixth Week: Concurrency & Security
Look out in slides for
16
◻ Principles
⬜ These principles hold independently of the language.
◻ Java Features
⬜ Java-specific functionality that are useful to know
◻ Good Programming Principles
⬜ Conventions, and habits to start acquiring early!