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

Similar documents
CSCI 201L Syllabus Principles of Software Development Spring 2018

Internet Web Technologies ITP 104 (2 Units)

Introduction to Information Technology ITP 101x (4 Units)

CS 241 Data Organization using C

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

Database Systems: Concepts, design, and implementation ISE 382 (3 Units)

ITP489 In-Memory DBMS for Real Time Analytics

Spring 2018 El Camino College E. Ambrosio. Course Syllabus

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

CSCI455: Introduction to Programming System Design

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

You must pass the final exam to pass the course.

Enterprise Network Design ITP 499 (3 Units)

Object-Oriented Programming for Managers

CMPE/SE 135 Object-Oriented Analysis and Design

CMSC 132: Object-Oriented Programming II. Administrivia

Digital Forensics ITP 375 (3 Units)

Announcements. 1. Forms to return today after class:

CISC 3130 Data Structures Fall 2018

ITP454 Enterprise Resource Planning, Design, and Implementation

CS2013 Course Syllabus Spring 2017 Lecture: Friday 8:00 A.M. 9:40 A.M. Lab: Friday 9:40 A.M. 12:00 Noon

CS503 Advanced Programming I CS305 Computer Algorithms I

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

CS 140 Programming with Objects

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

Introduction to Data Structures

Basics of Java Programming CS129 LTPC:

ITP454 Enterprise Resource Planning, Design, and Implementation

Programming Game Engines ITP 485 (4 Units)

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

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

INFS 2150 (Section A) Fall 2018

EECE.2160: ECE Application Programming Spring 2019

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

COURSE SYLLABUS ****************************************************************************** YEAR COURSE OFFERED: 2015

Algorithms and Data Structures Spring 2008

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

CS 375 UNIX System Programming Spring 2014 Syllabus

School of Computing and Information Sciences. Course Title: Data Structures Date: 3/30/2010 Course Number: COP 3530 Number of Credits: 3

Cleveland State University

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

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

AP Computer Science A Mira Costa High School - Class Syllabus,

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

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

CIS 408 Internet Computing (3-0-3)

GET 433 Course Syllabus Spring 2017

Syllabus CS 301: Data Structures Spring 2015

Introduction to UNIX

EECE.2160: ECE Application Programming Spring 2017

KOMAR UNIVERSITY OF SCIENCE AND TECHNOLOGY (KUST)

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

COMP-202C: Foundations of Programming

Pipelines for Games and Interactives CSCI 281, (3 Units)

San José State University Department of Computer Science CS049J, Programming in Java, Section 2, Fall, 2016

During the first 2 weeks of class, all students in the course will take an in-lab programming exam. This is the Exam in Programming Proficiency.

Data Structures and Algorithms

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

Java 2. Course Outcome Summary. Western Technical College. Course Information. Course History. Course Competencies

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

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

IT-2670: C/C++ PROGRAMMING LANGUAGE

CS/SE 153 Concepts of Compiler Design

Mathematics/Science Department Kirkwood Community College. Course Syllabus. Computer Science CSC142 1/10

CoSci 440 SYLLABUS Programming in C++ INSTRUCTOR Mari Rettke cell SECTION : and 13345

COURSE OVERVIEW. Successful completion of this course may provide one semester of college credit for computer science.

JAVA CONCEPTS Early Objects

CMPE 180A Data Structures and Algorithms in C++

Central Washington University Department of Computer Science Course Syllabus

COMP-202A: Introduction to Computing 1

San Jose State University - Department of Computer Science

CS/SE 153 Concepts of Compiler Design

BCIS 3630 Dr. GUYNES SPRING 2018 TUESDAY SECTION [JAN version] GRADER COURSE WEBSITE

CS 111: Programming Fundamentals II

Sprint 2017, Sul Ross State University

CS 3230 Object Oriented UI Development With Java Syllabus

Computer Science Department

COMP-202A: Introduction to Computing 1

CSCI 528: OBJECT ORIENTED PROGRAMMING, Fall 2015

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

CSC 111 Introduction to Computer Science (Section C)

Object Oriented Programming Using C++

CPS352 - DATABASE SYSTEMS. Professor: Russell C. Bjork Spring semester, Office: KOSC 242 x4377

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

CSC 210 COMPUTER SCIENCE II

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

Programming Standards: You must conform to good programming/documentation standards. Some specifics:

COMP 401 COURSE OVERVIEW

Trina Gregory. Background. Contact

CMPE 152 Compiler Design

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

CMPE 152 Compiler Design

CS193j Programming in Java

Advanced Programming CMPS 109

ESET 349 Microcontroller Architecture, Fall 2018

CS 240 Fall 2015 Section 004. Alvin Chao, Professor

CS313T ADVANCED PROGRAMMING LANGUAGE

PELLISSIPPI STATE COMMUNITY COLLEGE MASTER SYLLABUS LINUX ADVANCED SYSTEM & NETWORK ADMINISTRATION CSIT 2475

INFSCI 1017 Implementation of Information Systems Spring 2017

Implementing Hash and AVL

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 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 a high-level language Instructor Claire Bono Contact Info bono@usc.edu SAL 310 213-740-4510 Lecture Lab 3 hours / week 2 hours/ week Textbook Big Java, 4th Ed., by Cay Horstmann, Wiley 2010, ISBN 978-0-470-50948-7 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 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 application. You can also access the SCF file system and the compilers using Sun Unix Workstations in Sal 125. 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 runs on the SCF environment before submitting. 1

Labs The lab is intended to practice 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) 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% 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 and on the web starting from: http://web-app.usc.edu/scampus/university-student-conduct-code/ (links to subsequent sections are at the left side of the page). In this course we encourage students to study together. This includes discussing general strategies to be used on individual assignments. However, all work submitted for the class is to be done individually, unless an assignment specifies otherwise. Also, all exams are closed book, closed note. 2

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. 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. 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 Simple I/O Expressions, precedence Simple types, variables Course Outline Lab 1: Development environment: basic Unix commands, compiling and running java programs Using objects (2 lectures) Examples: PrintStream, String, and simple graphics classes Objects and object references Constructing objects Method calls, implicit parameter and explicit parameters, return value Reading Java API documentation Lab 2: Simple computation with console I/O and dialog box I/O Implementing classes (1 lecture) Instance variables Methods Constructors Public interface Javadoc Control structures (1 lecture) If, while, for Boolean expressions Short-circuit evaluation Error-checking input Common loop algorithms Lab 3: Implement a simple class to a specification Arrays and Array Lists (2 lectures) Random access in arrays Partially filled arrays ArrayList class Arrays of objects Common array algorithms Lab 4: Enhance a small program with loops and ArrayList (e.g., manage scores for a student) More on designing and defining classes (2 lectures) Desirable qualities of classes o Independence among classes 4

o Data encapsulation methods o accessors, mutators, and constructors o Preconditions and postconditions Instance variables vs. locals Class invariants Static methods and variables Lab 5: Implement a class to a specification (e.g., re-implement Lab 3 as a Scores class) Testing (1 lecture) Unit testing Stubs Shell-scripts for testing Redirecting input and output in Unix Regression testing Lab 6: Use debugger on supplied buggy program Lab 7: Implement test driver for a class; write a shell-script for testing Inheritance and Interfaces for GUI programming (2 lectures) Inheritance in Java Swing and AWT libraries Dynamic binding callbacks Inner classes Events and Listeners Lab 8: Modify program with buttons and listeners Reading and Writing Text files; Exception handling (2 lectures) Scanners and PrintWriters Command-line arguments Checked and unchecked exceptions Throw and catch exceptions Lab 9: read and write a file, use exceptions for error-conditions. Linear Container classes (2 lectures) Java.utils LinkedList Lists vs. arrays Stack Queue Lab 10: Modify program using java LinkedList class Algorithm analysis and big-o notation (1 lecture) Constant, linear and quadratic time Big-O of earlier examples Log n time example: binary search Lab 11: Empirical comparisons of (1) list vs. array implementation of a sequence, and (2) linear vs. binary search on an array 5

Maps, Sets, and Sorting (3 lectures) Hash tables o Hash functions o Collision resolution o Applications HashMap vs. TreeMap Java sort methods, Comparable interface Lab 12: Implement concordance using a map; sort results by number of occurrences (C++) Differences between C++ and Java (3 lectures) Running g++ compiler I/O Stand-alone functions Parameter passing Object model Lab 13: Re-implement an earlier lab in C++ (C++) Dynamic data, pointers, and linked lists (3 lectures) Pointers and memory Delete Array syntax Dynamic arrays Linked lists Lab 14: Implement various linked list functions Separate compilation and make (1 lecture) Compilation units Header files Forward declarations Makefiles Lab 15: write a makefile; convert a single file program into a multi-file program 6