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



Similar documents
Computing Concepts with Java Essentials

Computer Programming I

Basic Programming and PC Skills: Basic Programming and PC Skills:

Fundamentals of Computer Programming CS 101 (3 Units)

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

Introduction to Java Programming ITP 109 (2 Units) Fall 2015

Java 6 'th. Concepts INTERNATIONAL STUDENT VERSION. edition

CS 2302 Data Structures Spring 2015

Introduction to Information Technology ITP 101x (4 Units)

BCS2B02: OOP Concepts and Data Structures Using C++

CS 300 Data Structures Syllabus - Fall 2014

PLV Goldstein 315, Tuesdays and Thursdays, 6:00PM-7:50PM. Tuesdays and Thursdays, 4:00PM-5:30PM and 7:50PM 9:30PM at PLV G320

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

DATA STRUCTURES USING C

AP Computer Science A - Syllabus Overview of AP Computer Science A Computer Facilities

CS 111 Classes I 1. Software Organization View to this point:

ITP 300: Database Web Development. Database Web Development (Monday section) Fall 2012 Course Units

AP Computer Science AB Syllabus 1

INFSCI 0017 Fundamentals of Object- Oriented Programming

Video Game Programming ITP 380 (4 Units)

RARITAN VALLEY COMMUNITY COLLEGE ACADEMIC COURSE OUTLINE. CISY 105 Foundations of Computer Science

3D Modeling, Animation, and Special Effects ITP 215x (2 Units)

CS 261 C and Assembly Language Programming. Course Syllabus

AP Computer Science A Syllabus

PROBLEM SOLVING SEVENTH EDITION WALTER SAVITCH UNIVERSITY OF CALIFORNIA, SAN DIEGO CONTRIBUTOR KENRICK MOCK UNIVERSITY OF ALASKA, ANCHORAGE PEARSON

Course MS10975A Introduction to Programming. Length: 5 Days

How To Teach C++ Data Structure Programming

Summit Public Schools Summit, New Jersey Grade Level / Content Area: Mathematics Length of Course: 1 Academic Year Curriculum: AP Computer Science A

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

COMPUTER SCIENCE (5651) Test at a Glance

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

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

The course assumes successful completion of CSCI E-50a and CSCI E-50b, i.e. at least two semesters of programming, with a grade of C- or better.

Computer Science 210: Data Structures. Introduction

Java Application Developer Certificate Program Competencies

Introduction to Computer Programming Course Syllabus Fall 2015

Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science. Unit of Study / Textbook Correlation

KITES TECHNOLOGY COURSE MODULE (C, C++, DS)

Syllabus COP2253: Introduction to Programming in Java

Syllabus for CS 134 Java Programming

Programming and Software Development CTAG Alignments

Glossary of Object Oriented Terms

COURSE SYLLABUS EDG 6931: Designing Integrated Media Environments 2 Educational Technology Program University of Florida

Mobile Application Development ITP 342 (3 Units)

IT 106 Introduction to IT Problem Solving Using Computer Programming revised

Lewis, Loftus, and Cocking. Java Software Solutions for AP Computer Science 3rd Edition. Boston, Mass. Addison-Wesley, 2011.

Advanced Digital Forensics ITP 475 (4 Units)

Syllabus Introduction to C++ Programming and Numerical Analysis Spring 2016

CS 2112 Spring Instructions. Assignment 3 Data Structures and Web Filtering. 0.1 Grading. 0.2 Partners. 0.3 Restrictions

Mobile Application Technologies ITP 140 (2 Units)

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

Mobile Application Development ITP 342 (3 Units)

Computer Science III Advanced Placement G/T [AP Computer Science A] Syllabus

Interactive Web Development ITP 301 (4 Units)

CS135 Computer Science I Spring 2015

Fundamentals of Java Programming

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

3D Modeling, Animation, Compositing, and Special Effects ITP 215x (2 Units)

10CS35: Data Structures Using C

CMSC Fundamentals of Computer Programming II (C++)

Computer. Course Description

COURSE OUTLINE. Prerequisites: Course Description:

Symbol Tables. Introduction

Questions 1 through 25 are worth 2 points each. Choose one best answer for each.

Security and Computer Forensics ITP 477 (4 Units)

Introduction to Computer Forensics ITP 499 (3 Units)

GET 114 Computer Programming Course Outline. Contact: Office Hours: TBD (or by appointment)

WORKSPACE WEB DEVELOPMENT & OUTSOURCING TRAINING CENTER

Some programming experience in a high-level structured programming language is recommended.

Java (12 Weeks) Introduction to Java Programming Language

Using Web-based Tools to Enhance Student Learning and Practice in Data Structures Course

Management Information Systems 260 Web Programming Fall 2006 (CRN: 42459)

02-201: Programming for Scientists

CS 1361-D10: Computer Science I

Curriculum Map. Discipline: Computer Science Course: C++

Database Web Development ITP 300 (3 Units)

NEW YORK CITY COLLEGE OF TECHNOLOGY/CUNY Computer Systems Technology Department

Computer Science CS 2334: Programming structures and abstractions

DESIGN FOR USER EXPERIENCE (ITP 310)

SAMPLE ONLY. COMM 304 Interpersonal Communication Spring 2015 Tu/Th 11:00 12:20 ANN L101

Course Syllabus. COSC 1437 Programming Fundamentals II. Revision Date: August 21, 2013

ADVANCED SCHOOL OF SYSTEMS AND DATA STUDIES (ASSDAS) PROGRAM: CTech in Computer Science

Java SE 8 Programming

Major Topics Covered in the Course

Syllabus: IST451. Division of Business and Engineering. Penn State Altoona

Krishna Institute of Engineering & Technology, Ghaziabad Department of Computer Application MCA-213 : DATA STRUCTURES USING C

7.1 Our Current Model

USC VITERBI SCHOOL OF ENGINEERING INFORMATICS PROGRAM

El Dorado Union High School District Educational Services

Online Course Syllabus CS320: C Programming

AP Computer Science Java Subset

Transcription:

Introduction to Programming System Design CSCI 455x (4 Units) Description This course covers programming in Java and C++. Topics include review of basic programming concepts such as control structures, functions, and arrays; coverage of more advanced programming topics such as classes, recursion, and linked lists; use of a container class library to program with tools such as a map class and a sort function; and an introduction to algorithm analysis. There will also be an emphasis on good development techniques such as good code style and documentation, unit testing and use of debugging tools. A second goal of the course is to introduce the Unix programming environment, including tools such as the shell, simple shell scripts, and makefiles. Prerequisite: minimal programming experience in some high-level language (can program with loops, if statements, and call and write functions with parameters) Instructor Claire Bono Contact Info bono@usc.edu SAL 310 213-740-4510 Lecture Lab 3 hours / week 2 hours / week Textbook Big Java Early Objects, 5th Ed., by Cay Horstmann, Wiley ISBN 978-1-118-70201-7 Note: this ISBN is for a less-expensive unbound binder-ready version, and is available in the campus bookstore. There is also a relatively inexpensive electronic version available on coursesmart.com. If you prefer a regular softcover book, it s available from other booksellers under ISBN 978-1-118-43111-5. Assignments Programming assignments are graded on thorough testing, documentation, and style, as well as correctness. All work to be submitted for the class is to be done individually unless an assignment specifies otherwise. Late policy for programming assignments. You may turn in a program up to two days late for a penalty of 10% of the available points. So, for example, if you would have gotten a 70/100, you will get 60/100 instead (not 63). After the two day grace period, a late program receives no credit. Computing environment rev 8/18/13 All submitted programs must compile and run on aludra Sun java compiler for java programs and the g++ compiler for C++ programs. Aludra is a time-share Unix computer on the SCF file system. You can access it remotely from PC's on or off campus using the x- win32 software, or from Macs using the X11 or XQuartz application. The first lab will be focused on introducing the programming environment. If you choose to develop your programs on your own computer using another environment (e.g., Eclipse or Visual C++) you are responsible for making sure your code compiles and 1

runs on the SCF environment before submitting. Labs The lab is intended for practicing some of the techniques learned in class on the computer in an environment where you can get immediate help from the teaching assistant. Labs meet once a week for two hours. They will start the first week of classes. You will be given the lab exercises a few days before the lab: some require some advance preparation. You may complete the lab exercises before the lab period if you wish, but they are due during your lab section. If you finish early, you are free to leave (once you get the lab checked off) or spend the rest of the time working on your other CS 455 assignments. Each set of lab exercises usually can earn you up to 4 points. There be will up to roughly 40 lab points total. To take some of the pressure off the lab score only 80% of the available points are applicable towards your final score in the class (but scaled to be worth 10% of the total course score). This gives you some leeway if you have to miss a lab, or if you don't have time to solve all of the problems one day. Den students. Den students will complete their labs remotely, and submit them electronically. Den students do not have to be available during the lab session. They can get help on the lab the same way they do for other assignments: generally via email (whenever) or by phone (during office hours or by appointment) with someone on the course staff. Exams All exams are closed book, closed note. Makeup exams will not be given. Absence due to a serious illness will be an acceptable reason for missing an exam, and the final grade will be scaled accordingly. The exam dates will be announced the first day of class. Website https://www-scf.usc.edu/~csci455 Grading The following is the relative weight of each part of the course work. At the end of the semester, you will have a score out of 100 percent. This score will be used in a class curve to arrive at a letter grade. I guarantee that >=90 will be some kind of A, >=80 will at least be some kind of B, >=70 will at least be some kind of C, and that >=60 will at least be some kind of D. Programming assignments 30% Labs 10% Midterm Exam 1 10% Midterm Exam 2 20% Final Exam 30% Total 100% Policy on regrades (e.g., if you think there was a scoring mistake on your work): you have until one week from when you get the graded work back to initiate a regrade. For programming assignments: if you have questions about your grade, send email to the grader (his/her name should appear at the bottom of your detailed score file). For exams: please come see the instructor in person. 2

Academic Integrity The USC Student Conduct Code prohibits plagiarism. All USC students are responsible for reading and following the Student Conduct Code, which appears in the sections on University Governance (sections 10.00-16.00) in the current version of SCampus. SCampus is available on the web at http://scampus.usc.edu (follow the link on University Governance on the left). In this course we encourage students to study together. This includes discussing high-level general strategies to be used on individual assignments. But it would not, for example, include jointly developing pseudo-code for an assignment solution with another student. All work submitted for the class is to be done individually, unless an assignment specifies otherwise. Also, all exams are closed book, closed note. Some examples of what is not allowed by the conduct code: copying all or part of someone else's work and submitting it as your own, giving another student in the class a copy of your assignment solution, consulting with another student during an exam, using a solution or adapted solution to an assignment that you found on the web. The outside code resources students will be allowed to use in assignments for this class are limited to code written by the course staff for the purposes of helping students in the course, or code from the textbook for this course. If you do use any such code not written by you, you are required to acknowledge your sources in your README file. If you have questions about what is allowed, please discuss it with the instructor. Because of past problems with plagiarism in this and other computer science courses, we may be running all submitted programming assignments through sophisticated plagiarismdetection software. Violations of the Student Conduct Code will be filed with the Office of Student Judicial Affairs and Community Standards (SJACS), and appropriate sanctions will be given. The sanctions are usually a lot more severe than not submitting the assignment. Students with Disabilities Any student requesting academic accommodations based on a disability is required to register with Disability Services and Programs (DSP) each semester. A letter of verification for approved accommodations can be obtained from DSP. Please be sure the letter is delivered to the instructor as early in the semester as possible. DSP is located in STU 301 and is open 8:30 a.m. - 5:00 p.m., Monday through Friday. The phone number for DSP is (213)740-0776. (continued next page) 3

Introduction to Programming System Design CSCI 455x (4 Units) Computing environment basics (1 lecture) Basic Unix commands Compiling and running Java programs on Unix Output and computation in Java Course Outline Lab: Development environment: basic Unix commands, compiling and running java programs Using objects (2 lectures) Objects and object references Constructing objects Methods and method calls: accessors and mutators Primitive values; Strings Reading Java API documentation Examples: PrintStream, String, Rectangle, and Scanner classes Lab: Write a program using a Java class; use Java documentation Implementing classes (1 lecture) Instance variables Method definitions Scope and lifetime of variables Public interface vs. private Constructors Test programs Example: Student class Lab: Implement a simple class to a specification Control structures (1 lecture) If, while, for Boolean expressions Short-circuit evaluation, DeMorgan s law Error-checking input Multi-way tests Dangling else Arrays and Array Lists (2.5 lectures) Random access in arrays; ex: counting scores Partially filled arrays ArrayList class Arrays of objects Ex: array operations in Names class o Incremental development o Test-driven design o Code refactoring Lab: Enhance a small program with loops and ArrayList 4

More on designing and defining classes (2 lectures) A class represents a single concept When static methods are used Methods: preconditions and postconditions o Assert statements Instance variables vs. locals: minimize scope Class invariants o Testing implementation invariants Parameter passing Methods with side-effects o Defining immutable classes o Returning references from inside objects o Copying objects Lab: Test assert statement; write invariants; line-oriented input Algorithm analysis and big-o notation (1 lecture) Constant, linear and quadratic time Big-O of earlier examples Merge algorithm Finding big-o of Java library methods Lab: Use debugger on supplied buggy program Recursion (2 lectures) Thinking recursively helper functions computational complexity of recursive functions tree recursion backtracking Lab: Write some recursive routines Linear Container classes (2 lectures) java.utils LinkedList Lists vs. arrays Iterators Stacks Queues Lab: Modify program using java LinkedList class Lab: Empirical comparisons of (1) list vs. array implementation of a sequence, and (2) linear vs. binary search on an array Inheritance and Interfaces (1 lecture) Examples of inheritance Inheritance in Java graphics programs Overriding Object methods: clone, tostring, equals Interfaces: ex: sorting and Comparable interface Lab: Implement sort Comparator 5

Reading and Writing Text files; Exception handling (1 lecture) Scanners and PrintWriters Checked and unchecked exceptions Throw and catch exceptions Lab: read command-line arguments, use exceptions for error-conditions. Maps, Sets, and Sorting (4 lectures) Java Map and Set interfaces o Iterating over a Map or Set o Ex: concordance Binary search and log n time Overview of binary search trees Hash tables o Hash functions o Collision resolution o Applications o Big-O Sorting: insertion sort and mergesort Comparison of Map implementations Java sort methods, Comparable interface Lab: Implement concordance using a Map; sort results by number of occurrences (C++) Differences between C++ and Java (2 lectures) Running g++ compiler I/O Stand-alone functions Parameter passing Fixed-size arrays C++ object model Defining classes Lab: Use C++ vectors (C++) Dynamic data, pointers, and linked lists (3 lectures) Pointers and memory Delete Pointers to objects Linked lists Dynamic arrays C strings Pointer arithmetic Lab: C++ debugger; implement various linked list functions Separate compilation and make (2 lectures) Compilation units Header files Forward declarations Makefiles Lab: write a makefile; convert a single file program into a multi-file program 6