Outline. Computer Science 331. Course Information. Assessment. Contact Information Assessment. Introduction to CPSC 331

Similar documents
Outline. Introduction. 2 Proof of Correctness. 3 Final Notes. Precondition P 1 : Inputs include

COMP250: Introduction to Computer Science. Jérôme Waldispühl & Carlos Oliver Gonzalez School of Computer Science McGill University

Outline. Computer Science 331. Three Classical Algorithms. The Sorting Problem. Classical Sorting Algorithms. Mike Jacobson. Description Analysis

CPSC 2380 Data Structures and Algorithms

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

Spring CISM 3330 Section 01D (crn: # 10300) Monday & Wednesday Classroom Miller 2329 Syllabus revision: #

CSc 2310 Principles of Programming (Java) Jyoti Islam

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

CPSC 4600 Biometrics and Cryptography Fall 2013, Section 0

GET 433 Course Syllabus Spring 2017

Algorithms and Data Structures, or

Fundamentals of Computer Science CSCI 136 Syllabus Fall 2018

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

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

Software Reliability and Reusability CS614

CIS*1500 Introduction to Programming

Computer Science 210: Data Structures

ECE 156A - Syllabus. Description

CSC8260: Wireless Networking and Cyber-Physical Systems. Hongwei Zhang

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

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

EECE.2160: ECE Application Programming Spring 2017

Data Structures and Algorithms

INF 315E Introduction to Databases School of Information Fall 2015

Spring 2003 Instructor: Dr. Shahadat Hossain. Administrative Matters Course Information Introduction to Programming Techniques

B. Subject-specific skills B1. Problem solving skills: Supply the student with the ability to solve different problems related to the topics

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

Computer Networks IT321

Introduction to Databases Fall-Winter 2010/11. Syllabus

PC Applications IT102 estart Fall 2014

CS2 Algorithms and Data Structures Note 1

Syllabus CS 301: Data Structures Spring 2015

Textbook(s) and other required material: Raghu Ramakrishnan & Johannes Gehrke, Database Management Systems, Third edition, McGraw Hill, 2003.

CS 241 Data Organization. August 21, 2018

CS 241 Data Organization using C

CSC 111 Introduction to Computer Science (Section C)

Introduction to Databases Fall-Winter 2009/10. Syllabus

CS120 Computer Science I. Instructor: Jia Song

Fundamentals Of Data Structures In C++ Instructor's Solution Manual Pdf >>>CLICK HERE<<<

EECE.2160: ECE Application Programming Spring 2019

Advanced Database Organization INF613

San Jose State University College of Science Department of Computer Science CS151, Object-Oriented Design, Sections 1, 2, and 3, Spring 2018

CS 132 Exam #1 - Study Suggestions

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

CSE 504: Compiler Design

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

San Jose State University College of Science Department of Computer Science CS151, Object-Oriented Design, Sections 1,2 and 3, Spring 2017

EE3315 Internet Technology EE3315 Internet Technology Overview Slide 1

COMP-202A: Introduction to Computing 1

COSC 115A: Introduction to Web Authoring Fall 2014

Data Structures. Lecture 1: Introduction CSC212. Instructor: George Wolberg Department of Computer Science City College of New York

Outline. Computer Science 331. Desirable Properties of Hash Functions. What is a Hash Function? Hash Functions. Mike Jacobson.

VE281 Data Structures and Algorithms. Introduction and Asymptotic Algorithm Analysis

AE Computer Programming for Aerospace Engineers

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

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

CPSC 427a: Object-Oriented Programming

KOMAR UNIVERSITY OF SCIENCE AND TECHNOLOGY (KUST)

ITT Technical Institute. ET2560T Introduction to C Programming Onsite and Online Course SYLLABUS

Oklahoma State University Institute of Technology Face-to-Face Common Syllabus Fall 2017

Algorithms and Data Structures

ECE 3574: Applied Software Design

ITNW 1425 Fundamentals of Networking Technologies Course Syllabus fall 2012

SYLLABUS Type of evaluation

ISM 324: Information Systems Security Spring 2014

ECE 4450:427/527 - Computer Networks

Computer Science Department

Fundamentals of Digital System Design ECE 3700, CPSC 3700

Algorithms and Data Structures

BEMIDJI STATE UNIVERSITY COLLEGE OF BUSINESS, TECHNOLOGY AND COMMUNICATION Course syllabus Fall 2012

Algorithms and Data Structures. Algorithms and Data Structures. Algorithms and Data Structures. Algorithms and Data Structures

CSci 4211: Data Communications and Computer Networks. Time: Monday and Wednesday 1 pm to 2:15 pm Location: Vincent Hall 16 Spring 2016, 3 Credits

CASPER COLLEGE COURSE SYLLABUS MSFT 1600 Managing Microsoft Exchange Server 2003 Semester/Year: Fall 2007

1. Textbook #1: Our Digital World (ODW). 2. Textbook #2: Guidelines for Office 2013 (GFO). 3. SNAP: Assessment Software

Implementing and Maintaining Microsoft SQL Server 2005 Analysis Services

Data Structures - Section FG

CSE 336. Introduction to Programming. for Electronic Commerce. Why You Need CSE336

In this course, you need to use Pearson etext. Go to "Pearson etext and Video Notes".

In this course, you need to use Pearson etext. Go to "Pearson etext and Video Notes".

COSC 115: Introduction to Web Authoring Fall 2013

COSE212: Programming Languages. Lecture 0 Course Overview

While waiting for the lecture to begin, please complete. the initial course questionnaire.

Algorithms and Data Structures

Rochester Institute of Technology Golisano College of Computing and Information Sciences Department of Information Sciences and Technologies

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

CS 3512, Spring Instructor: Doug Dunham. Textbook: James L. Hein, Discrete Structures, Logic, and Computability, 3rd Ed. Jones and Barlett, 2010

Introduction to UNIX

CSC6290: Data Communication and Computer Networks. Hongwei Zhang

BEMIDJI STATE UNIVERSITY COLLEGE OF BUSINESS, TECHNOLOGY AND COMMUNICATION Course syllabus Fall 2011

CSE506: Operating Systems CSE 506: Operating Systems

CS240: Programming in C

CMPE 152 Compiler Design

Syllabus. Computer Science Information Technology 975. Information Storage and Management for Computer Networks

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

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

CS Computer Science I

Outline. Computer Science 331. Information Hiding. What This Lecture is About. Data Structures, Abstract Data Types, and Their Implementations

Design and Analysis of Algorithms. Comp 271. Mordecai Golin. Department of Computer Science, HKUST

COMP Data Structures

ITT Technical Institute. SD1420 Introduction to Java Programming Onsite and Online Course SYLLABUS

Transcription:

Outline Computer Science 331 Introduction to CPSC 331 Mike Jacobson Department of Computer Science University of Calgary Lecture #1 1 Contact Information 2 3 Expected Background 4 How to Succeed 5 References 6 What to do Next Mike Jacobson (University of Calgary) Computer Science 331 Lecture #1 1 / 18 Mike Jacobson (University of Calgary) Computer Science 331 Lecture #1 2 / 18 Contact Information Instructor: Mike Jacobson Phone: 210-9410, ICT 612 email: jacobs@cpsc.ucalgary.ca URL: http://pages.cpsc.ucalgary.ca/~jacobs/ Contact Times: Office hours: M 12:00-14:00 or by appointment only Lectures: MWF 10:00 10:50 in SA 119 Tutorial Section #1: M/W 16:00 16:50 in MS 176 Tutorial Section #2: M/W 13:00 13:50 in MS 156 Tutorial Section #3: M/W 11:00 11:50 in MS 156 First labs: next Monday Components: 25% four assignments (written and programming questions) 15% term test 1 (Feb 13, 17-18:30, SB 142) 15% term test 2 (Mar 26, 17-18:30, SB 142) 45% final exam Take note of term test dates/times: let me know of conflicts as soon as possible (no make up tests) Submission procedures and guidelines: information available on course web site NOTE: a grade of C- or better is required to use this course as a prerequisite for any course offered by Computer Science Mike Jacobson (University of Calgary) Computer Science 331 Lecture #1 3 / 18 Mike Jacobson (University of Calgary) Computer Science 331 Lecture #1 4 / 18

Specifying a Problem to be Solved : An approach for developing computer software in a modern professional context Key Idea: Software developers should define and use precise and checkable specifications of requirements for software components Useful (indeed, arguably necessary ) when software is developed and maintained over a long period of time by a group whose members can change Many modern programming languages, including Java, include facilities to support this approach. You will learn about and use these in this course A specification of requirements for a problem includes: Precondition: A condition that is satisfied by any well-formed instance (i.e., set of inputs) for this problem Postcondition: A condition that should be satisfied if the problem has been solved Documentation for a method solving this problem should include the above, along with implementation-dependent details (discussed later) As we ll see shortly, we can and should start to design test cases for methods as soon as the above (and nothing more) is available! Mike Jacobson (University of Calgary) Computer Science 331 Lecture #1 5 / 18 Mike Jacobson (University of Calgary) Computer Science 331 Lecture #1 6 / 18 Algorithms More About An Algorithm: is a finite sequence of steps that solves some well-defined problem is often given either by several paragraphs in carefully written English or using pseudocode. Such a description is (largely) implementation independent can be implemented as (part of) a program using some programming language Note: This course will focus at least as much on algorithms as on the computer programs generated from them. = CPSC 331 is not a programming course. Many computer science applications rely on solutions to a small number of fundamental problems Resource requirements and limitations may also be important and may differ from application to application Consequence: It is often useful to know about several algorithms for the same problem because there will be situations in which each is a better choice than the others In this course we will learn about algorithms for several fundamental problems, including searching and sorting Mike Jacobson (University of Calgary) Computer Science 331 Lecture #1 7 / 18 Mike Jacobson (University of Calgary) Computer Science 331 Lecture #1 8 / 18

Data Types and Abstract Data Types Data Structures A data type is defined by Data values and their representation Operations defined on the data values and the implementation of these operations as executable statements (i.e., methods) An abstract data type is, essentially: a specification of requirements for a data type it does not include (or require) a specific implementation but it may include conditions that data values must satisfy A data structure provides a representation of the data values specified by an ADT Together with algorithms for an ADT s operations, this provides an implementation-dependent description of a data type We will study several fundamental ADTs, along with data structures and algorithms for their operations, in this course Mike Jacobson (University of Calgary) Computer Science 331 Lecture #1 9 / 18 Mike Jacobson (University of Calgary) Computer Science 331 Lecture #1 10 / 18 Correctness and efficiency of algorithms are both important! In this course you will see numerous proofs of correctness of algorithms, and you will become familiar with the structure of a proof of correctness as a result design and implement tests in order to look for errors and use the results of tests to debug your programs learn ways to measure the time an algorithm requires in the worst case the amount of storage space In this course we will generally prove the correctness and efficiency of algorithms but we will test, debug and profile programs. Assignments will require Java programming. You will implement algorithms and data structures on your own use implementations in a standard Java library (the Java Collections Framework ) to solve problems Java will not be taught (much) during the lectures. However, sources of help with Java include lots of material on the course web site, textbook tutorials, which will include more material about Java programming (some of the time) Mike Jacobson (University of Calgary) Computer Science 331 Lecture #1 11 / 18 Mike Jacobson (University of Calgary) Computer Science 331 Lecture #1 12 / 18

Expected Background Expected Background: Programming Expected Background Expected Background: Other Areas An Object-Oriented Programming Language: Java should have been introduced in a prerequisite course see Java resources on the course web site or the textbook work through Tutorial Exercise #1 as soon as you can! It will be discussed in the first tutorial next week. Recursion: you should understand how recursive programs can be used to solve problems recursive definitions of various structures and properties will be used in this course as well Discrete Mathematics and Logic: have numerous applications in CPSC 331 (especially proofs and analysis) = MATH 271 is a prerequisite of this course! Technical Reading and Writing: this course will include reading assignments your writing will be assessed in this course Mike Jacobson (University of Calgary) Computer Science 331 Lecture #1 13 / 18 Mike Jacobson (University of Calgary) Computer Science 331 Lecture #1 14 / 18 How to Succeed How to Succeed In this course you will learn by doing! Prepare for and attend lectures obtain/read notes and other reading material ahead of time Prepare for and attend tutorials read and work through exercises ahead of time the more you do on your own the better Work through the self-study exercises will help you learn required aspects of Java for this course Take assignments seriously start early (not last minute!) make sure that you understand what you are and what you are not allowed to do when working on these Make use of my office hours if you need more help Mike Jacobson (University of Calgary) Computer Science 331 Lecture #1 15 / 18 Recommended Reference References Recommended Textbooks: Robert Lafore, Data Structures and Algorithms in Java, 2nd Edition, Sams Publishing, 2003, ebook via the library Thomas H. Cormen, et.al., Introduction to Algorithms, 3rd Edition, MIT Press, 2009, ebook via the library (2nd edition) Michael T. Goodrich and Roberto Tamassia, Data Structures and Algorithms Using Java (5th Edition), Wiley, 2010 Recommended Java Reference: Kathy Sierra and Bert Bates, Head First Java, O Reilly, Second Edition, 2005, ebook via the library Recommended Reference for Correctness: Michael Soltys, An Introduction to the Analysis of Algorithms, World Scientific, 2009. Helpful material on proofs of correctness in Chapter 1 (can download for free from book s website). Mike Jacobson (University of Calgary) Computer Science 331 Lecture #1 16 / 18

References What to do Next Other Resources What to do Next Course web site: lots of information here! Available from the instructor s home page Blackboard page will be used for assignment submission and access to grades Lectures: students are expected to attend all classes Partial notes will be made available online ahead of time Additional material on course web site Tutorials: participation in these is expected too! Self-exercises and tutorial exercises will be posted on the web site ahead of time 1 Make sure you are eligible to be in this course! 2 Buy the textbook (and consider the suggested reference) 3 Request your computer science account if you don t already have one 4 Work through Self-Study Exercise #1! It will be assumed that you have completed this before the first tutorial next Monday 5 Then read through Tutorial Exercise #1 and try to answer the questions on it! 6 Check out the course web site! It includes lots of information, including about how to accomplish the above Mike Jacobson (University of Calgary) Computer Science 331 Lecture #1 17 / 18 Mike Jacobson (University of Calgary) Computer Science 331 Lecture #1 18 / 18