CS 240 Fall Mike Lam, Professor. Just-for-fun survey:

Similar documents
CS 240 Fall 2015 Section 004. Alvin Chao, Professor

CSC 172 Data Structures and Algorithms. Fall 2017 TuTh 3:25 pm 4:40 pm Aug 30- Dec 22 Hoyt Auditorium

CISC 3130 Data Structures Fall 2018

San José State University Computer Science Department CS49J, Section 3, Programming in Java, Fall 2015

Programming for Engineers in Python

CS 241 Data Organization using C

CS 241 Data Organization. August 21, 2018

COMP251: Algorithms and Data Structures. Jérôme Waldispühl School of Computer Science McGill University

Syllabus COSC-051-x - Computer Science I Fall Office Hours: Daily hours will be entered on Course calendar (or by appointment)

Unit 10: Data Structures CS 101, Fall 2018

Introduction to Data Structures

CS 3030 Scripting Languages Syllabus

Lecture 1. Course Overview, Python Basics

Introduction to Programming System Design CSCI 455x (4 Units)

San José State University College of Science/Department of Computer Science CS 152, Programming Language Paradigms, Section 03/04, Fall, 2018

CSC 261/461 Database Systems. Fall 2017 MW 12:30 pm 1:45 pm CSB 601

CS503 Advanced Programming I CS305 Computer Algorithms I

CS2013 Course Syllabus Spring 2018 Lecture: Mon/Wed 2:00 P.M. 2:50 P.M. SH C259 Lab: Mon/Wed 2:50 P.M. 4:00 P.M. SH C259

CMSC 132: Object-Oriented Programming II. Administrivia

CS 3030 Scripting Languages Syllabus

Beijing Jiaotong University CS-23: C++ Programming Summer, 2019 Course Syllabus

KOMAR UNIVERSITY OF SCIENCE AND TECHNOLOGY (KUST)

BOSTON UNIVERSITY Metropolitan College MET CS342 Data Structures with Java Dr. V.Shtern (Fall 2011) Course Syllabus

CISC 3130 Data Structures Spring 2018

CS/ENGRD 2110 Object-Oriented Programming and Data Structures Spring 2012 Thorsten Joachims

Syllabus CS 301: Data Structures Spring 2015

CS 432 Fall Mike Lam, Professor. Compilers. Advanced Systems Elective

The Linux Command Line: A Complete Introduction, 1 st ed., by William E. Shotts, Jr., No Starch Press, 2012.

Lecture 1. Course Overview, Python Basics

Computer Science II Data Structures

San José State University Department of Computer Science CS-144, Advanced C++ Programming, Section 1, Spring 2018

CS 200, Section 1, Programming I, Fall 2017 College of Arts & Sciences Syllabus

COMP Data Structures

Compilers for Modern Architectures Course Syllabus, Spring 2015

San José State University Department of Computer Science CS166, Information Security, Section 1, Fall, 2018

3D Graphics Programming Mira Costa High School - Class Syllabus,

COSE212: Programming Languages. Lecture 0 Course Overview

COMP Data Structures

San José State University Department of Computer Science CS-174, Server-side Web Programming, Section 2, Spring 2018

CS 210 Algorithms and Data Structures College of Information Technology and Engineering Weisberg Division of Engineering and Computer Science

Course: Honors AP Computer Science Instructor: Mr. Jason A. Townsend

Course Syllabus. Course Information

CSC 443: Web Programming

Lecture I: Introduction and Overview

Data Structures and Algorithms

Welcome to CSL 201 Data Structures

CS/SE 153 Concepts of Compiler Design

COLLEGE OF DUPAGE CIS 2542 Advanced C++ with Data Structure Applications Course Syllabus

CS 432 Fall Mike Lam, Professor. Compilers. Advanced Systems Elective

COMP 401 COURSE OVERVIEW

CS 3270 Mobile Development for Android Syllabus

San José State University Department of Computer Science CS151, Object Oriented Design, Section 04, Fall, 2016 (42968)

VE281 Data Structures and Algorithms. Introduction and Asymptotic Algorithm Analysis

How do students do in a C++ based CS2 course, if the CS1 course is taught in Python? Short answer: no different than those who took CS1 with C++.

University of Maryland at College Park Department of Geographical Sciences GEOG 477/ GEOG777: Mobile GIS Development

ESET 369 Embedded Systems Software, Fall 2017

CSE 417 Practical Algorithms. (a.k.a. Algorithms & Computational Complexity)

Instructor: Anna Miller

Part III Appendices 165

CSC 015: FUNDAMENTALS OF COMPUTER SCIENCE I

Unit 7: Algorithms and Python CS 101, Fall 2018

ISM 324: Information Systems Security Spring 2014

CISN 340 Data Communication and Networking Fundamentals Fall 2012 (Hybrid)

CIS 101 Orientation Document Fall 2017

San José State University Department of Computer Science CS151, Section 04 Object Oriented Design Spring 2018

ESET 349 Microcontroller Architecture, Fall 2018

Computer Science Department

CSCE 441 Computer Graphics Fall 2018

Welcome to Solving Problems with Computers I

CSCI 6312 Advanced Internet Programming

Welcome. Orientation to online CPS102 Computer Science 2 (Java 2)

INFS 2150 (Section A) Fall 2018

Updated: 2/14/2017 Page 1 of 6

COMP Analysis of Algorithms & Data Structures

Lecture 1: CSE 373. Data Structures and Algorithms

CISC 124: Introduction To Computing Science II

Computer Science 210: Data Structures

Lecture 1. Course Overview Types & Expressions

ECE 3574: Applied Software Design

San José State University Department of Computer Science CS 166 / SE 166, Information Security, Section 4, spring, 2017

CS120 Computer Science I. Instructor: Jia Song

Advanced Programming Concepts. CIS 15 : Spring 2007

CS/SE 153 Concepts of Compiler Design

Fundamentals of Computer Science CSCI 136 Syllabus Fall 2018

CMPE012 Computer Engineering 12 (and Lab) Computing Systems and Assembly Language Programming. Summer 2009

CSC116: Introduction to Computing - Java

Additionally, if you are ing me please place the name of the course in the subject of the .

Syllabus. ICS103: Computer Programming in C 2017 / 2018 First Semester (Term 171) INSTRUCTOR Office Phone Address Office Hours

Spring Modern Computer Science in a Unix Like Environment CIS c

Welcome to CS 241 Systems Programming at Illinois

CS 6371: Advanced Programming Languages

Philadelphia University Faculty of Information Technology Department of Computer Science --- Semester, 2007/2008. Course Syllabus

Course Syllabus - CNT 4703 Design and Implementation of Computer Communication Networks Fall 2011

CS240: Programming in C

Canvas Student Guide. The Office of Online Learning Massasoit Community College

San José State University Computer Science Department CS157A: Introduction to Database Management Systems Sections 5 and 6, Fall 2015

CSE 114, Computer Science 1 Course Information. Spring 2017 Stony Brook University Instructor: Dr. Paul Fodor

CSC 111 Introduction to Computer Science (Section C)

CSE 240 Introduction to Computer Architecture

CS 253: Intro to Systems Programming 1/21

Transcription:

CS 240 Fall 2014 Mike Lam, Professor Just-for-fun survey: http://strawpoll.me/2421207

Today Course overview Course policies Python

Motivation Computers are digital Data is stored in binary format (1's and 0's) Assembly programming uses this directly This is tedious and error-prone! High-level languages (like Java) help Variables (where are the bits located?) Data types (what do the bits mean?) But they don't inherently solve all problems

Basic Example Arrays vs. Linked Lists my_list A B C D E 0 1 2 3 4 vs. my_list A B D E C Ø

Overview Data structures Abstractions for organizing data on a computer How is your data organized? Generally, the goal is to be as efficient as possible Topics: arrays, linked lists, stacks, queues, trees, graphs, maps, hash tables

Overview Algorithms Step-by-step procedure to solve a problem How exactly do I do? Generally, the goal is to be as efficient as possible Topics: recursion, asymptotic analysis, Big-O notation, searching, sorting

Overview Lots of crossover Most data structures are designed to help solve particular types of problems Many algorithms take advantage of particular data structures

Key Concepts Abstract data types Generic classes of data structures Often provided with a language's standard library Two goals: efficiency and reusability Algorithm analysis Measuring efficiency (what metrics to use?) Comparing algorithms (which is faster?) Empirical (test it!) and analytical (math!)

Goals Describe, implement, and analyze common data structures and algorithms Choose appropriate structures and algorithms to solve real-world problems Secondary goal: become familiar with a programming language that is not Java

Syllabus It's online: Read it! http://w3.cs.jmu.edu/lam2mo/cs240/syllabus.html Especially the parts marked in red The textbook is required Data Structures and Algorithms in Python Goodrich, Tamassia, Goldwasser Available on Safari online (not always accessible)

Course Policies Attendance is not mandatory Slides will be posted on the website If the class periods are not worth attending, tell me so that I can make them better! Don't waste time writing down stuff from the slides Please silence your cell phones during class

Course Policies Submit programming projects as specified in the project description No thumb drives, CDs, or emails (unless requeste Project grading will be based on automated tes results Late submissions up to 72 hours will receive a 10% penalty per 24 hr period

Course Policies The JMU Honor Code applies on ALL assignments We will use software to detect plagiarism Violations may be sent to the honor council All submitted code must be YOUR work entire You may work in groups to discuss assignments (in fact, I encourage this), but do NOT share code!

Course Grades Homework Assignments 30% Programming Projects 25% Midterm Exams 30% Final Exam 15%

Course Policies Exams will be held in ISAT 243 Final exam times are on the website If you ask for a re-grade, I may re-grade the entire assignment This applies to homework and projects, too If you have to miss a due date or exam because of an excused absence, let me know ASAP

Course Website This is the main course website: Lots of useful stuff: http://w3.cs.jmu.edu/lam2mo/cs240/ Syllabus Calendar Assignments Resources Check it regularly!

Online Systems Canvas Piazza (accessed via Canvas) Q&A and discussions Web-CAT Grades and online quizzes Project submissions Not quite ready yet Make sure you have accounts on all of these!

Questions?

Python We will use Python 3 for all code examples and programming projects Important websites: www.python.org - main Python website For installation and documentation www.pythontutor.com - web-based testbed For quick experimentation and learning

Python Python is a scripting language Interpreted, not compiled Dynamic typing Although compilers do exist Only runtime objects have types Good for quick prototyping

Python Example value = 1 for x in range(11): print("2 ^ " + str(x) +" = " + str(value)) value *= 2

Why Python? It's a very popular scripting language It's available on most platforms It's relatively easy to learn There are many utility libraries Widely-used YouTube, Reddit, Digg, Pinterest,Yelp, ILM, Rackspace, Phillips, Honeywell, etc.

Why Python 3? Backwards-incompatible Designed to fix fundamental design flaws Some major changes: print "hello" all strings are Unicode iterators instead of lists in many places removed old class implementation print("hello") 2to3 utility for semi-manual conversion

Python Whitespace is important These are different: if a < b: print("less than") print("good to go!") if a < b: print("less than") print("good to go!") Be careful! Use a Python-aware editor (some suggestions are on the website)

Python We will use the PEP 8 style guide: http://legacy.python.org/dev/peps/pep-0008/ Link is also on the class website ( Resources ) See also the summarized version Keep your code clean Include documentation Use docstrings (we will discuss this later)

Learning Python We will spend a couple of weeks learning Python Hybrid lecture/labs and dedicated lab time Major programming project TBD There are MANY tutorials available online if you wish to move faster or if you are having trouble with particular topics I recommend spending lots of time outside class experimenting You will also need an IDE or a text editor and console

Homework If you have a personal computer, install Python 3 and either 1) an IDE or 2) text editor and console Alternatively, go into ISAT 248 and familiarize yourself with the software on the lab computers Change the code snippet from the earlier slide to calculate Fibonacci numbers rather than powers of two Complete course survey and reading quiz by Wednesday (both are on Canvas)

Contacting Me Questions? Try Piazza! Email: lam2mo I will attempt to respond as quickly as possible, but do not expect a response in under 24 hours Office: ISAT 227 Office hours TBD Please fill out the course survey Appointments preferred outside office hours

Good luck! Have a great semester!