CMSC 152: Introduction to Computer Science II

Similar documents
CMSC 15100: Introduction to Computer Science I

CMSC Fundamentals of Computer Programming II (C++)

CS 300 Data Structures Syllabus - Fall 2014

Canisius College Computer Science Department Computer Programming for Science CSC107 & CSC107L Fall 2014

1.00 Lecture 1. Course information Course staff (TA, instructor names on syllabus/faq): 2 instructors, 4 TAs, 2 Lab TAs, graders

02-201: Programming for Scientists

CSC 314: Operating Systems Spring 2005

CS 261 C and Assembly Language Programming. Course Syllabus

Introduction: How does a student get started? How much time does this course require per week?

Math 3E - Linear Algebra (3 units)

Eastern Washington University Department of Computer Science. Questionnaire for Prospective Masters in Computer Science Students

The University of Chicago Booth School of Business Tools for Business Analysis: Excel and Matlab Winter, 2012.

CS 115 Introduction to Computer Programming Course Syllabus (Night Sections) Fall 2015

Accounting : Accounting Information Systems and Controls. Fall 2015 COLLEGE OF BUSINESS AND INNOVATION

IST565 M001 Yu Spring 2015 Syllabus Data Mining

Teaching Assistants (contact information for your TAs can be found on the course website): Luis Alvarez, Sarah Halterman, Corey Rovzar and Jason Ward.

Academic Calendar - UNDERGRADUATE. All Other Classes Begin; Late Registration Begins. Last Day to Drop a Class without a W on Transcript;

Eastern Washington University Department of Computer Science. Questionnaire for Prospective Masters in Computer Science Students

MATH Probability & Statistics - Fall Semester 2015 Dr. Brandon Samples - Department of Mathematics - Georgia College

How To Teach C++ Data Structure Programming

Major Topics Covered in the Course

F l o r i d a G u l f C o a s t U n i v e r s i t y S t a t i s t i c a l M e t h o d s F a l l C R N

MAC 1140 Reference # MWF 9:00 AM 9:50 AM Fall 2011 Rm. 3321

Math 103, College Algebra Fall 2015 Syllabus TTh PM Classes

CS 306/491-3 Linux Programming Spring 2015

Psychology Mind and Society Mondays & Wednesdays, 2:00 3:50 pm, 129 McKenzie Hall Fall 2013 (CRN # 16067)

CS3332 Software Engineering I. Term III/2016

INFO/CS 4302 Web Information Systems. FT 2012 Week 1: Course Introduction

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

Professional Writing: Course Guidelines/Syllabus

Software Development Foundations CPSC Spring 2014 Syllabus

CHEMISTRY 109. Lecture 2, Fall Read This Syllabus Today Keep It for Future Reference

INTRODUCTION TO CRIMINAL JUSTICE FALL 2015

MATH 241: DISCRETE MATHEMATICS FOR COMPUTER SCIENCE, Winter CLASSROOM: Alumni Hall 112 Tuesdays and Thursdays, 6:00-8:15 pm

Computer Science 1015F ~ 2010 ~ Notes to Students

CS A250 (CRN ) C++ Programming Language 2. Syllabus Fall 2015

GENERAL PSYCHOLOGY, PSC 1, Section 2

MATH 1111 College Algebra Fall Semester 2014 Course Syllabus. Course Details: TR 3:30 4:45 pm Math 1111-I4 CRN 963 IC #322

MUSIC BUSINESS Northwest College MUSB COOPERATIVE EDUCATION, MUSIC MANAGEMENT AND MERCHANDISING. CRN Summer 2014

Fundamentals of Computer Programming CS 101 (3 Units)

Eastern Washington University Department of Computer Science. Questionnaire for Prospective Masters in Computer Science Students

Earth Science 101 Introduction to Weather Fall 2015 Online

Math 103, College Algebra Spring 2016 Syllabus MWF Day Classes MWTh Day Classes

COMP-202B: Foundations of Programming

CS 253: Intro to Systems Programming

Biology 45 ONLINE Introduction to Human Nutrition

Sample Syllabus (C++) CSCI 1301 Introduction to Programming Principles

ECE 297 Design and Communication. Course Syllabus, January 2015

School of Kinesiology Faculty of Health Sciences Western University. KIN 2032b Research Design in Human Movement Science January to April 2016

Thursday 11:00 a.m. - 12:00 p.m. and by appointment

1Rules, Tips and Learning Objectives for Class

Rutgers University, Department of Psychology Developmental Psychology Winter Office Hours Office Phone

Lake-Sumter Community College Course Syllabus. STA 2023 Course Title: Elementary Statistics I. Contact Information: Office Hours:

BUAD 310 Applied Business Statistics. Syllabus Fall 2013

University of Dayton Department of Computer Science Undergraduate Programs Assessment Plan DRAFT September 14, 2011

CJ 4480 Digital Forensics II Syllabus - Term

Online Basic Statistics

INSTRUCTOR INFORMATION Instructor: Adrienne Petersen Office: DMS 233 Office Hours: TuTh 11am-1pm by appointment

Brazosport College Syllabus for Criminology (CJSA 1325) Spring 2014 (Online)

Prairie View A&M University Course Syllabus ACCT 2113 Financial Accounting Fall 2015

After completing SI- 539, students will have a working personal portfolio website in production.

Class Participation and Homework:

George Washington University Department of Psychology PSYC 001: General Psychology

Academic Calendar

Course Content Concepts

ABNORMAL PSYCHOLOGY (PSYCH 238) Psychology Building, Rm.31 Spring, 2010: Section K. Tues, Thurs 1:45-2:45pm and by appointment (schedule via )

Math 35 Section Spring Class meetings: 6 Saturdays 9:00AM-11:30AM (on the following dates: 2/22, 3/8, 3/29, 5/3, 5/24, 6/7)

FALL Monday/Wednesday, 9:00-10:15, IT167, Class # Department of Psychology Indiana University-Purdue University Indianapolis

Online Course Syllabus CS320: C Programming

School of Computing and Information Sciences. Course Title: Computer Programming III Date: April 9, 2014

KIN 104 FITNESS AND WELLNESS ONLINE LECTURE Summer 2016

COURSE: PSYC 1101 (11) Introduction to Psychology TIME AND DAYS: Tuesdays & Thursdays; 1:00 2:15 pm CLASSROOM: Science Center 1405 (and computer lab)

South Plains College. MATH 2320 Differential Equations Section 001, M W 8 9:15 am Math Bldg., Rm. 105

Public Finance Syllabus for Fall 2015

MAT 103B College Algebra Part I Winter 2016 Course Outline and Syllabus

Academic Calendars. Term I (20081) Term II (20082) Term III (20083) Weekend College. International Student Admission Deadlines

ECE 156A - Syllabus. Lecture 0 ECE 156A 1

4ECE 320 Signals and Systems II Department of Electrical and Computer Engineering George Mason University Fall, 2015

ACADEMIC YEAR CALENDAR FALL SEMESTER First Half-Semester Courses

Summer 2015 Course Title & credit hours: Information Security, CET2830C (hybrid); 3 credit hours

SI 539, Winter 2014 Complex Web Design

Syllabus COP2334: Introduction to Programming in C++

COURSE SYLLABUS MRKG 1311 (3:3:0) PRINCIPLES OF MARKETING. Business. Business Administration Department. Technical Education Division

Instructor: Carlos E. Caicedo, Ph.D. Phone: (Office) Office: 215 Hinds Hall Office Hours: TBA

CS Data Science and Visualization Spring 2016

FNCE 3498: Accelerated Fundamentals of Finance Loyola Marymount University Spring 2015 Section 01: Tuesday & Thursday, 3:00pm-4:40pm, Room: Hilton 063

Financial Management FIN 300, Sections 004, 005 Fall 2011 University of Michigan, Ross School of Business

Mass Communication Teaching (MMC 6930) Spring Semester 2015

ACTG 051A: Intermediate Accounting 1A Foothill College, Summer 2015

Basic info Course: CS 165 Accelerated Introduction to Computer Science Credits: 8 Instructor: Tim Alcon timothy.alcon@oregonstate.

MARSHALL SCHOOL OF BUSINESS University of Southern California. FBE 555: Investment Analysis and Portfolio Management

Economics 103: Principles of Microeconomics Course Outline: Fall Sections A01 & A02 (CRNs & 10930)

BUS 3525 Strategic Management Online

George Mason University Electrical and Computer Engineering Department ECE 201: Introduction to Signal Analysis Syllabus Fall 2015

Florida Gulf Coast University Finite Math M GF 1106 Spring 2014 CRN 11072

Transcription:

CMSC 152: Introduction to Computer Science II The University of Chicago, Winter 2015 Adam Shaw and Matthew Wachs http://www.classes.cs.uchicago.edu/archive/2014/winter/15200-1 Welcome! In CS152, we introduce a selection of major computer science topics through instruction in computer programming and various analytical techniques. More specifically, we learn the craft of classical imperative programming using the C programming language. CS152 is designed for students intending to major or minor in the subject, although others are welcome. The specific goals of the course are these: to learn to write algorithms and build data structures in an imperative, side-effect rich style, to become well-acquainted with the C programming language, which is a lingua franca in the computing professions, to learn the low-level implementations of a wide variety of data structures, including arrays, linked lists, hash tables, and trees, to use, design and create command-line tools, to learn to reason about memory usage and manage memory directly, and to analyze the efficiency of computer programs. In pursuing these goals, students will become acquainted with a selection of classic data structures and algorithms. Broader, more technical treatments of these topics, in particular algorithm analysis, are presented in later undergraduate courses. Piazza: Online Support Piazza is an online question-and-answer system that we use for that purpose as well as distribution of course materials on occasion. You will receive an email about piazza registration, with instructions, at your uchicago email address at the start of the quarter. 1

Instructors Adam Shaw, email: ams@cs.uchicago.edu, office: Ryerson 157. Matthew Wachs, email: mwachs@cs.uchicago.edu, office: Ryerson 175A. Teaching Assistants and Graders Our graduate student teaching assistants this quarter are Connor Imes, Haopeng Liu, Nikita Mishra, Nick Seltzer, Severin Thaler, and Zhixuan Zhou. Connor, Nick, and Severin will be running labs. You will interact with your TAs in labs, during office hours and through piazza, but you will not need to email them directly. Please see the next section. Our graders this quarter are Jonathan Jin, Marc Kealhofer, Mark Maskeri, Benjamin Rohrer, Abraham Secular, and Alice Zhang. Contacting Us If you have questions about the course, and those questions are in a sense impersonal that is, they are about course material or course logistics we ask that you post those questions publicly on piazza, rather than contacting any of the staff members directly. This ensures you will receive the fastest, most consistent possible response from the staff. Since students usually have common questions, posting public questions is also very efficient for your classmates as well. As yet another advantage, it avoids duplication of work on the part of the staff. In cases where you have a question that is about your own personal situation and not relevant to the class as a whole, you may ask a private question on piazza, which is invisible to your classmates, or send email to your instructor directly. A few piazza rules: Do not post any more than a snippet of code to piazza. Any post that says Here s my hundred lines of code what s wrong with it? will be deleted immediately. Please do not post anonymously to piazza. Piazza posts are better, more thoughtfully written, and more courteous when the author is identified. We reserve the right to delete anonymous posts from piazza. Do not post questions of the form Will we lose points if...? Ask about correctness, efficiency, elegance, but not points. 2

Lectures There are three sections of CS152 this quarter, at the following times and places. Section 1: MWF 9:30 10:20, Harper 140, Adam Shaw. Section 2: MWF 11:30 12:20, Ryerson 251, Adam Shaw. Section 3: MWF 1:30 2:20, Ryerson 251, Matthew Wachs. The first lectures are on Monday, January 5; the last are on Wednesday, March 11. We do not allow the use of electronic devices during lectures. The devices are simply too distracting. This includes laptops, smartphones, and tablets. The lone exception to this policy is for students whose handwriting issues necessitate their use of a device for note taking, who will be permitted to use a plain text editor on a laptop whose wireless capability is turned off. If you are such a student, let your instructor know. Lab Sessions Students must register for and attend lab sessions each week. Lab sessions are held in the Computer Science Instructional Laboratory (also known as the CSIL). There is a new CSIL facility as of this quarter; it is located on the first floor of Crerar Library. Attendance at the lab session for which you are registered is mandatory. We offer twelve weekly lab sections at eight different meeting times. During the four Wednesday slots, two labs occur side by side in adjacent lab quadrants. If you need to switch your lab time, there will be a way to do so online early in the quarter; details to follow. You will work on a department s Macintosh computer during your lab session. You must use the department s computer during lab and may not use your own laptop. The lab times are as follows: Tues 12pm 1:20pm; Tues 1:30pm 2:50pm; Tues 3pm 4:20pm; Tues 4:30pm 5:50pm; Wed 2:30pm 3:50pm; Wed 4:00pm 5:20pm; Wed 5:30pm 6:50pm. There will be no lab exercises during the week of Thanksgiving, and no lab exercises the last week (before reading period). Office Hours To be announced on the web once the quarter starts. In addition to the office hours we provide ourselves, the College Core Tutor Program employs computer science tutors Sunday through Thursday nights from 7pm 11pm, starting in the second week of the quarter. Text The C Programming Language (Second Edition), Kernighan and Ritchie (this book is informally known as K&R ). The textbook is available on campus 3

at the Seminary Co-op Bookstore 1 ; you can of course find new and used copies at your favorite online bookstore as well. Software We will mainly use emacs, gcc and subversion. Everyone should also go ahead and install ssh on their local machine(s) as needed. All C code written for this course must compile under gcc 4.6.3 without extensions (such as nested functions, a Boolean type, etc.). This version of gcc is the standard installation on the CS department machines at /usr/bin. Windows users are encouraged to download and install Cygwin (if they haven t already done so) along with these tools. Schedule of Topics by Week (subject to change) Week Topics 1 the command line, binary numbers, types, conditionals 2 operators, functions, iteration, pointers 3 heap allocation, arrays, strings 4 structs, tagged unions, linked lists 5 more lists, trees 6 more trees, multidimensional arrays 7 hash tables, stacks, queues 8 graph representations, graph algorithms 9 more graph algorithms, in-place sorting, efficiency 10 tree balancing Grading Coursework is comprised of lab exercises (done at lab sessions, discussed above), homework assignments, projects, and exams. The relative weighting of these in computing your grade is below. Homework There will be weekly homework assignments. These will be assigned on Monday or Tuesday and will be due the following Monday. Projects There will be a longer multipart project during the latter part of the term. The final part of this project will be due during exam week. Exams There will be two exams for all students that will meet in Kent 107. midterm exam: Wednesday, February 4, 7pm 9pm, and final exam: Wednesday, March 11, 7pm 9pm. Please plan accordingly. Students with standing exam accommodations with the college must work with SDS to arrange for alternate times and places. Students without standing accommodations who have major conflicts must make 1 5751 S. Woodlawn Avenue; http://www.semcoop.com. 4

alternate arrangements with their instructor at least one week before the date of the exam in question. Each student s final grade will be computed according to the following formula: lab exercises 15%, homework 20%, project work 15%, exams 25% each. Late Work Deadlines in this course are rigid. Since you submit your work electronically, deadlines are enforced to the minute. Late work will not earn credit. However, to allow for whatever inevitable deadline-related difficulties arise for individuals throughout the quarter, we will drop the lowest scoring lab exercise from our final calculation, and we will drop the lowest scoring homework exercise as well. Please note that no project work will be dropped: only one lab and one homework. (We will accept late work in the case of special circumstances, when those circumstances are extraordinary.) Academic Honesty In this course, as in all your courses, you must adhere to college-wide honesty guidelines as set forth at http://college.uchicago.edu/ policies-regulations/academic-integrity-student-conduct. The college s rules have the final say in all cases. Our own paraphrase is as follows: 1. Never copy work from any other source and submit it as your own. 2. Never allow your work to be copied. 3. Never submit work identical to another student s. 4. Document all collaboration. 5. Cite your sources. We are serious about enforcing academic honesty. If you break any of these rules, you will face tough consequences. Please note that sharing your work publicly (such as posting it to the web) definitely breaks the second rule. With respect to the third rule, you may discuss the general strategy of how to solve a particular problem with another student (in which case, you must document it per the fourth rule), but you may not share your work directly, and when it comes time to sit down and start typing, you must do the work by yourself. If you ever have any questions or concerns about honesty issues, raise them with your instructor, early. Advice Writing code that does what it is supposed to do can be joyful, even exhilarating. By contrast, fighting for hours with broken code is misery. We would like you to experience more of the former and less of the latter. Work methodically. Start your work well ahead of time. Beyond a certain point, it is not profitable to be stumped. If you have made no progress in some nontrivial chunk of time, say, one hour, it is time to stop and change your approach. Use 5

one of our many support mechanisms to get some assistance. We will help you get going again when you are stuck. 6