CS162 Week 1 Kyle Dewey. Overview Basic Introduction CS Accounts Scala survival guide.

Slides:



Advertisements
Similar presentations
CSE341: Programming Languages Lecture 2 Functions, Pairs, Lists Dan Grossman Winter 2013.
Advertisements

CS162 Week 2 Kyle Dewey. Overview Continuation of Scala Assignment 1 wrap-up Assignment 2a.
Intro to CIT 594
Programming with Alice Computing Institute for K-12 Teachers Summer 2011 Workshop.
George Blank University Lecturer. CS 602 Java and the Web Object Oriented Software Development Using Java Chapter 4.
Road Map Introduction to object oriented programming. Classes
COMP171 Data Structure & Algorithm Tutorial 1 TA: M.Y.Chan.
CS Lecture 03 Outline Sed and awk from previous lecture Writing simple bash script Assignment 1 discussion 1CS 311 Operating SystemsLecture 03.
Slides prepared by Rose Williams, Binghamton University Chapter 13 Interfaces and Inner Classes.
Interfaces. In this class, we will cover: What an interface is Why you would use an interface Creating an interface Using an interface Cloning an object.
Slides prepared by Rose Williams, Binghamton University Chapter 5 Defining Classes II.
Programming in Scala Chapter 1. Scala: both object-oriented and functional Scala blends –object-oriented and –functional programming in a –statically.
CSE 1301 J Lecture 2 Intro to Java Programming Richard Gesick.
CSE341: Programming Languages Lecture 11 Type Inference Dan Grossman Winter 2013.
Intro to CIT 594
Recitation 1 Programming for Engineers in Python.
1 Python Control of Flow and Defining Classes LING 5200 Computational Corpus Linguistics Martha Palmer.
Programming Languages and Paradigms Object-Oriented Programming.
10-Sep-15 Classes. Classes and objects Scala is an Object-Oriented (O-O), functional language Object-Oriented (O-O) means it’s built around “objects”
CSE 501N Fall ‘09 00: Introduction 27 August 2009 Nick Leidenfrost.
CS162 Week 1 Kyle Dewey. Overview Basic Introduction CS Accounts Scala survival guide.
Tutorial C#. PLAN I. Introduction II. Example of C# program :Hello World III. How to use C# language GUI elements Primitives Types Expressions and operators.
Ruby! Useful as a scripting language – script: A small program meant for one time use – Targeted towards small to medium size projects Use by: – Amazon,
Chapter 9 Defining New Types. Objectives Explore the use of member functions when creating a struct. Introduce some of the concepts behind object-oriented.
CS 11 java track: lecture 1 Administrivia need a CS cluster account cgi-bin/sysadmin/account_request.cgi need to know UNIX
CSCI-383 Object-Oriented Programming & Design Lecture 13.
CSE 425: Object-Oriented Programming I Object-Oriented Programming A design method as well as a programming paradigm –For example, CRC cards, noun-verb.
APCS Java AB 2004 Review of CS1 and CS2 Review for AP test #1 Sources: 2003 Workshop notes from Chris Nevison (Colgate University) AP Study Guide to go.
1 © 2002, Cisco Systems, Inc. All rights reserved. Arrays Chapter 7.
CIT 590 Intro to Programming First lecture on Java.
Objects & Dynamic Dispatch CSE 413 Autumn Plan We’ve learned a great deal about functional and object-oriented programming Now,  Look at semantics.
Topic 1 Object Oriented Programming. 1-2 Objectives To review the concepts and terminology of object-oriented programming To discuss some features of.
Programming in Java CSCI-2220 Object Oriented Programming.
CS 376b Introduction to Computer Vision 01 / 23 / 2008 Instructor: Michael Eckmann.
Copyright Curt Hill Variables What are they? Why do we need them?
Overview The Basics – Python classes and objects Procedural vs OO Programming Entity modelling Operations / methods Program flow OOP Concepts and user-defined.
PROGRAMMING LANGUAGES: PROLOG, CLOJURE, F# Jared Wheeler.
The Scala API. Scala has a reputation of being a difficult language Some people feel that Scala is beyond what the average programmer can master Others.
CS162 Week 1 Kyle Dewey. Overview Basic Introduction CS Accounts Scala survival guide.
Intro to CIT 594
CSE 413 Languages & Implementation Hal Perkins Autumn 2012 Structs, Implementing Languages (credits: Dan Grossman, CSE 341) 1.
M1G Introduction to Programming 2 5. Completing the program.
CIS 270—Application Development II Chapter 8—Classes and Objects: A Deeper Look.
OOP with Objective-C Categories, Protocols and Declared Properties.
Introduction to Object-Oriented Programming Lesson 2.
CMSC 202 Advanced Section Classes and Objects: Object Creation and Constructors.
How to execute Program structure Variables name, keywords, binding, scope, lifetime Data types – type system – primitives, strings, arrays, hashes – pointers/references.
CS2102: Lecture on Abstract Classes and Inheritance Kathi Fisler.
BIT 115: Introduction To Programming Professor: Dr. Baba Kofi Weusijana (say Doc-tor Way-oo-see-jah-nah, Doc-tor, or Bah-bah)
CSE 341 : Programming Languages Lecture 8 First Class Functions Zach Tatlock Spring 2014.
CS 330 Programming Languages 10 / 23 / 2007 Instructor: Michael Eckmann.
Unit Testing with FlexUnit
CISC105 – General Computer Science Class 4 – 06/14/2006.
Terms and Rules II Professor Evan Korth New York University (All rights reserved)
OOP Basics Classes & Methods (c) IDMS/SQL News
INF3110 Group 2 EXAM 2013 SOLUTIONS AND HINTS. But first, an example of compile-time and run-time type checking Imagine we have the following code. What.
Execution ways of program References: www. en.wikipedia.org/wiki/Integrated_development_environment  You can execute or run a simple java program with.
Java and C# - Some Commonalities Compile into machine-independent, language- independent code which runs in a managed execution environment Garbage Collection.
Node.js Modules Header Mastering Node.js, Part 2 Eric W. Greene
CSE341: Programming Languages Lecture 11 Type Inference
Programming Languages Dan Grossman 2013
Friend Class Friend Class A friend class can access private and protected members of other class in which it is declared as friend. It is sometimes useful.
Tutorial C#.
CSE341: Programming Languages Section 1
Java Programming Language
CSE341: Programming Languages Section 1
Review of Previous Lesson
CSE341: Programming Languages Lecture 11 Type Inference
„Lambda expressions, Optional”
CSE341: Programming Languages Lecture 11 Type Inference
Presentation transcript:

CS162 Week 1 Kyle Dewey

Overview Basic Introduction CS Accounts Scala survival guide

Office Hour Choose an hour from within: Tuesday/Thursday 11 AM - 1 PM Friday 11 AM - 4 PM Also available by appointment

Google Group We have a Google group (162w14) Feel free to discuss, even post test cases Pretty much anything CS162-related that doesn’t involve sharing code

Communication Policy Assume I’ll take 24 hours to respond to any I’m usually a lot faster than that Google group is usually a better resource I can still answer it Other people can see it Someone else may respond faster

CS Account You will need a CS account One can be created at:

Collaboration You may discuss ideas I.e. check if the list is sorted You may exchange test cases I.e. this test fails if your code does not check if the list is sorted All these can be freely posted to the Google group, too

Collaboration You may not exchange or discuss code I.e. this code checks if a list is sorted I.e. you need a function that uses three variables that returns... We automatically determine similarity scores for code via a proven reliable method

Protect Your Code Do not host your code on a public repository Execute chmod 600 filename for each file in your project ( chmod 600 *.scala usually does the trick) Otherwise, people can and have taken other people’s code In general, it is not possible to determine who stole from who

Discussion / Lecture Importance These are not mandatory, but it is nearly impossible to do the assignments without them “nearly impossible” means “expect to take several hours studying the lecture and discussion notes before you can implement it” If you cannot make lecture/discussion, arrange for someone else to take notes for you

Assignment Difficulty The assignments are intended to be very difficult and take multiple sittings to do It is ill-advised to do them alone It is even more ill-advised to do them the night before

Assignment Difficulty Most of the difficulty will be in figuring out exactly what needs to be done and how to do it The coding is accidental Historically, shorter complete solutions tend to pass more tests

Scala

Scala Discussion It’s not possible to cover everything in these slides in-depth in one section This is intended as a strong foundation for the class assignments Examples are on my website ( scala_examples.zip )

What? A non-Java language that runs on the Java Virtual Machine (JVM) Essentially a “better Java” Better suited for object-oriented programming and functional programming

Why Less boilerplate More expressive (read: less code) Think more, type less Clarity

Properties and Idioms Everything is an object (unlike Java) Emphasis on immutable state In other words, avoid reassignment

Variable Declaration Two forms: val and var val creates a runtime constant, much like final in Java var creates a typical mutable variable (HIGHLY discouraged and will typically negatively impact grade)

Method Definition Uses the def reserved word Everything is public by default The result of the last expression in the function is what is returned - no need for return (which should be avoided)

Type Inferencer Can automatically determine the type of Variables Function return values Anonymous function parameters Not completely foolproof, but usually excellent

Higher-Order Functions Functions can take other functions as parameters, or even return functions Functions (well, closures) can be created on the fly Note: this is strictly more powerful than function pointers For the JavaScript people: think callbacks

Classes Created with the class reserved word Defaults to public access Constructors are not typical

Traits Created with the trait reserved word Like a mixin in Ruby Think Java interfaces, but they can have methods defined on them More powerful than that, but not relevant to this course

object Used in much the same way as static is in Java Defines both a class and a single instance of that class (and only a single instance) Automated implementation of the Singleton design pattern Keeps everything consistently an object

equals, ==, and eq As with Java, if you want to compare value equality, you must extend equals Case classes automatically do this for you However, instead of saying x.equals(y), merely say x == y If you want reference equality, say: x eq y

Case Classes Behave just like classes, but a number of things are automatically generated for you Including hashCode, equals, and getters Typically used for pattern matching

Pattern Matching Used extensively in Scala Like a super-powerful if Used with the match reserved word, followed by a series of case s

null In general, null is an excellent wonderful/terrible feature Often poorly documented whether or not null is possible Checking for impossible cases Not checking for possible cases

Option A solution: encode null as part of a type For some type, say Object, if null is possible say we have a NullPossible Scala has this, known as Option In general, if null is possible, use Option

Tuples For when you want to return more than one thing Can be created by putting datums in parenthesis Can pattern match on them

Sequence Processing Functions AKA: Why while is rare and for isn’t for

Looping Scala has a while loop, but its use is highly discouraged (again, point loss) It’s not actually needed General functional programming style is recursion, but this is usually overkill

foreach Applies a given function to each element of a Seq

map Like foreach, in that it applies a given function to each element of a sequence However, it also returns a new sequence that holds the return values of each of the function calls

filter Takes a predicate, i.e. a function that returns true or false Applies the predicate to each item in a list A new list is returned that contains all the items for which the predicate was true

foldLeft Extremely flexible, but sometimes unwieldy Takes a base element Takes a function that takes a current result and a current list element The function will manipulate result with respect to the current element

flatMap Like map, but made especially for functions that return Seq s Will internally “flatten” all of the inner Seq s into a single Seq More on this later in the course

for Comprehensions Much like Python’s list comprehensions Internally translated into a series of foreach, flatMap, map, and filter operations

Compiling/Running Code Use scalac to compile code Use scala to run the code scala and scalac are all on CSIL

Running the REPL Just type scala at the command line Pretty nifty to quickly check to see what an expression does

Development If you want an IDE, IntelliJ IDEA has been recommended Personally, I use emacs and the scala-mode plugin (needs to be downloaded)

Assignment 1 Due Tuesday, January 14 Will need most everything shown here Hint hint useful APIs: Seq.mkString Seq.reverse Seq.head Seq.tail