Foundations of Programming



Similar documents
Fluency in Information Technology

How To Teach C++ Data Structure Programming

02-201: Programming for Scientists

Computer Science 210: Data Structures. Introduction

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

Finance 471: DERIVATIVE SECURITIES Fall 2015 Prof. Liang Ma University of South Carolina, Moore School of Business

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

College of Southern Maryland Fundamentals of Accounting Practice(ACC 1015) Course Syllabus Spring 2015

BUS Computer Concepts and Applications for Business Fall 2012

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

CMSC Fundamentals of Computer Programming II (C++)

PSY 2012 General Psychology Sections 4041 and 1H85

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

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

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

Course Description. Prerequisites. CS-119/119L, Section 0137/0138 Course Syllabus Program Design & Development - Fall 2015

Software Development Foundations CPSC Spring 2014 Syllabus

CS 425 Software Engineering. Course Syllabus

ISM 4210: DATABASE MANAGEMENT

ACCY 2001 Intro Financial Accounting Fall 2014

Financial Optimization ISE 347/447. Preliminaries. Dr. Ted Ralphs

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

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

How To Gain Competitive Advantage With Big Data Analytics And Visualization

PSYC 101: General Psychology

ADVANCED WEB TOPICS 1 - SYLLABUS

MIT The Fundamentals of Computer Programming Fall Credits Watson School of Education University of North Carolina Wilmington

Course Syllabus COURSE TITLE. Intro to Criminal Justice COURSE NUMBER CCJ 1020 PREREQUISITES. none CREDIT HOURS 3.0 CONTACT HOURS.

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

TITLE: Elementary Algebra and Geometry OFFICE LOCATION: M-106 COURSE REFERENCE NUMBER: see Website PHONE NUMBER: (619)

MT120-ES: Topics in Applied College Math (4 credits; 100% online) Syllabus Fall 2013

Clinical Psychology Syllabus 1

Math 103, College Algebra Fall 2015 Syllabus TTh PM Classes

How to be Successful in Foundations of Physics I (PHYS 2305)

BUS 2100 Business Communication Fall 2006

A. COURSE DESCRIPTION

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

Experimental Psychology PSY 3017, CRN Fall 2011

ISM 4113: SYSTEMS ANALYSIS & DESIGN

CS 425 Software Engineering. Course Syllabus

Intro. to Data Visualization Spring 2016

Math 3E - Linear Algebra (3 units)

Life Cycle Product Management EGR Special Topics in Engineering. Course Overview

San José State University CS160, Software Engineering, Sections 1, 2, and 4, Fall, 2015

Industrial/Organizational Psychology (PCO 4930)

Course: ISYS 4373 Application Development with Java Prerequisite: ISYS 3293

Syllabus. May 16, Wednesday, 10:30 AM 12:30 PM

CHILD GROWTH & DEVELOPMENT EDHD 411(0301) FALL 2015 University of Maryland

General Psychology, PSY 101

PSY 2012 General Psychology Syllabus

BUS , Management Communication

Major Topics Covered in the Course

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

COURSE SYLLABUS. ESE 544/444 Project Management

Class Periods: Tuesday 11:45 a.m. - 1:40 p.m. (5th & 6th Periods) Thursday 11:45 a.m. - 12:35 p.m. (5th Period)

CSC 314: Operating Systems Spring 2005

Management 352: Human Resource Management Spring 2015 Syllabus

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)

Fundamentals of Computer Programming CS 101 (3 Units)

Psychological Testing (PSYCH 149) Syllabus

Information Systems and Supply Chain Management Bryan School of Business and Economics University of North Carolina at Greensboro

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

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

Instructors: Mushfiq Swaleheen,Ph.D., Associate Professor. Office: Lutgert Hall 3306 Bill Browning

MGT 5309 FALL 07 LOGISTICS AND SUPPLY CHAIN MANAGEMENT SYLLABUS

Introduction to Business Course Syllabus. Dr. Michelle Choate Office # C221 Phone: Mobile Office:

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

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

BPA434: ADVANCED TOPICS IN CORPORATE FINANCE COURSE OUTLINE

MSIS 630 Project and Change Management (Fall 2014) Course Syllabus

ISQS 3358 BUSINESS INTELLIGENCE FALL 2014

Introduction to Computer Programming Course Syllabus Fall 2015

General Business 704: Data to Decisions Fall 2013 Wisconsin School of Business, UW-Madison. All class meetings will be held in 2294 Grainger.

UNIVERSITY OF DAYTON MANAGEMENT AND MARKETING DEPARTMENT MKT 315: RETAIL MARKETING Course Syllabus Winter 2008, Section 01

ITSY1342 Section 151 (I-Net) Information Technology Security

Gordon College ECB 362 Cost Accounting Online Summer Flexibility with Responsibility

Financial Analysis FIN 513, Fall A 2011 University of Michigan, Ross School of Business

IVY TECH COMMUNITY COLLEGE REGION 03 SYLLABUS MATH 136: COLLEGE ALGEBRA SUMMER Instructor: Jack Caster Telephone: ext.

Health Psychology Psychology Fall 2015

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

Marketing for Hospitality and Tourism Course Syllabus. Dr. Michelle Choate Office # C221 Phone: Mobile Office:

Syllabus: ACG 2071 Principles of Managerial Accounting (online), Summer 2008

INFO 2130 Introduction to Business Computing Fall 2014

OPERATIONS MANAGEMENT (OM335: 04285, 04290)

Department of Computer & Information Sciences. INFO-450: Information Systems Security Syllabus

$ Communications$in$the$Professional$7orld$ (Course #13230, J. Foresta, Tuesday / Thursday, Room: ET-201, 7:00 8:50 P.M.)

AGEC 448 AGEC 601 AGRICULTURAL COMMODITY FUTURES COMMODITY FUTURES & OPTIONS MARKETS SYLLABUS SPRING 2014 SCHEDULE

Introduction to Computer Graphics. Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2012

THE AMERICAN ACADEMY OF ART Syllabus for 3DA301 INTRODUCTION TO 3-D MODELING/ANIMATION FALL 2014

1. Strengthen your knowledge of the biological principals governing the nervous system.

General Psychology. Course Syllabus

DEPARTMENT OF INFORMATION SCIENCE. INFO221 Application Software Development COURSE OUTLINE

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

CS1400 Introduction to Computer Science

Transcription:

Foundations of Programming Bulletin Description A first formal course in computer programming required (e.g. Comp 110, UNC). Intermediate programming: objects, pointers, classes, interfaces, packages, object composition, inheritance, visibility, delegation, observers, MVC (model view controller), window systems and user-interface toolkits, collections, generics, threads,, recursive descent, exceptions, assertions. General Course Info Term: Fall 2015 Department: COMP Course Number: 401 Section Number: 001 Time: TR 11:00 12:15 Location: Room SN 14 Website: http://www.cs.unc.edu/~dewan/comp114/current/ Instructor Info Name: Prof. Prasun Dewan Office: FB150 Email: dewan@cs.unc.edu Phone: 5906123 Web: http://www.cs.unc.edu/~dewan Office Hours: TR 15:30 16:30 Teaching Assistants (TBA) Name Office Email Office Hours Textbooks and Resources I plan to provide Word chapters, PPT slides, and YouTube videos on the material I cover accessible from the course home page. These should suffice for the course. They will not be posted on Sakai, which will be used however for submitting programs.

Course Description This course is intended for people who have learned to program. Its goal is to teach how to program well. The common programming strategy of beginners is to write the first solution they can think of without carefully identifying and weighing different alternatives. For all but the simplest problems, this approach of writing quick and dirty programs will take you to the debugging stage very quickly, but will make debugging slow. For large, complex programs, you need to identify multiple alternative solutions to the problem, choose an alternative that most directly solves the problem, and think carefully what your solution does, and how it works. The claim is that, although quick and dirty programming may produce a program faster, the concepts we teach will help you produce a correct program faster. Moreover, they will lead to programs that are easy to change and reuse. We assume you have learned the following basic programming concepts: primitive types (integers, real numbers, Booleans), variables, constants, assignments, comments, expressions, arrays, loops, arrays, and procedures/functions/methods. These concepts are taught in most if not all introductory programming courses regardless of whether they teach conventional or object-oriented programming. This course will teach you the next-level programming concepts. These include objects, classes, interfaces, packages, inheritance, delegation, design patterns, exceptions, assertions, pointers, and formal correctness. These concepts will not help you solve new problems; rather, they will help you solve problems in new ways. The skills that will enable you to use these concepts will form a large part of the challenge you face in this course. After this course, you will have a much deeper understanding of the programming and learn some of the ideas that can make programming a science. We will be using Java as a vehicle for learning these concepts. Target Audience As mentioned in the course description, this course is intended for people who have learned to program. Its goal is to teach how to program well. Prerequisites As mentioned in the course description, we assume you have learned the following basic programming concepts: primitive types (integers, real numbers, Booleans), variables, constants, assignments, comments, expressions, arrays, loops, arrays, and procedures/functions/methods. These concepts are taught in most if not all introductory programming courses regardless of whether they teach conventional or object-oriented programming.

Goals and Key Learning Objectives As mentioned in the course description, the goal is to teach how to program well. The common programming strategy of beginners is to write the first solution they can think of without carefully identifying and weighing different alternatives. For all but the simplest problems, this approach of writing quick and dirty programs will take you to the debugging stage very quickly, but will make debugging slow. For large, complex programs, you need to identify multiple alternative solutions to the problem, choose an alternative that most directly solves the problem, and think carefully what your solution does, and how it works. The claim is that, although quick and dirty programming may produce a program faster, the concepts we teach will help you produce a correct program faster. Moreover, they will lead to programs that are easy to change and reuse Course Requirements Key Dates The students must attend lectures and recitations, implement in-class recitation assignments, implement a semester-wide project, and take a midterm and non-cumulative final. The material you learn makes little sense when you write small programs. This is why, in this class, you will exercise it in a large project you will build incrementally over the course of the semester. Each increment will be an assignment that builds on the software you have implemented as part of previous assignments. Because this is a programming course, unless all programs are submitted and work, you may not pass. Point values of assignments and programs will be in accordance with their length and difficulty. You must submit the source code of your program (with pledge signed) and screens showing executions of the program on test data. You may also do demos at certain stages of your project Examinations are closed book, notes and program listings; computers and collaboration are not allowed either. Midterm: Tuesday Oct 13 th, 2015 (in class) Final: 12pm, Thursday Dec. 10 (in class) Grading Criteria Final grades will be based on the following formula:

22% Midterm Exam 22% Final Exam 8% Recitation Work 13% In-Class Work 35% Project (Programming Assignments) The above percentages add up to 100%, but the instructors reserve the right to apply a 10% fudge factor to give consideration to things such as good (in terms of quality and quantity) class/piazza participation, stellar programs, thoughtful in-class exercises. In addition, students will get ample opportunity to get extra credit through early submission and extra work. There is no fixed mapping between overall percentage and final grade. Bring your laptops to class and recitation so you can do exercises. Course Policies Students are requires to attend each class unless there are extenuating circumstances. If such circumstances occur, you should access the class material posted for missed classes, and contact classmates to become aware of the announcements that were made. Assignments are due at 11:59pm on each specified due date. Programs and homework assignments will be penalized 10% if one class session late and 25% (for two days) if two class sessions late. No credit will be given for assignments submitted after the start of the second class period following the due date, although you are advised to submit work whenever it is finished as we can give your credit indirectly through the fudge factor. It s always better to hand in a program, even if it is very late, than to hand in nothing, especially because later assignments will build on others. To help people who get irreversibly behind and cannot finish the last few assignments, we will allow you to shift assignment dates of the ones you finish based on the number of last few assignments you sacrifice. This means, you can apply the due date of the next assignment to the current assignment without late penalty, with the caveat that each time you do this, you sacrifice one more assignment at the end. For example, if there are 11 assignments, and you realize that there is no way you can finish assignment 4 a week after it is due, you can apply the due date of assignment 5 to assignment 4, and the due date of assignment 6 to assignment 5, and so on. But you have sacrificed the last assignment, assignment 11. Now let us say that you when you reach assignment 7, you realize you cannot finish it by the due date of assignment 8. You can shift dates one more time by sacrificing assignment 10. You are welcome to finish a sacrificed assignment and get it graded, but the grade you get will count as extra rather than normal credit. We expect each of you to finish each assignment in time these rules are given because assignments build on each other.

As a large fractionof your grade depends on your performance in recitation exercises, you should attend all of them. You will be allowed to drop two of your recitation grades to take into account the fact that there may be extenuating circumstances for missing recitations. Honor Code 1. You are encouraged and expected to discuss the assignments among yourselves. 2. You are permitted to discuss all aspects of the Java programming language with anyone. 3. You are permitted to discuss solutions at the design level but not at the code level. For example, you are allowed to tell others that you have separate classes in your program for scanning and evaluating expressions, or that you are using a loop instead of recursion for scanning, but are not allowed to show them Java interfaces, classes, while loops or other Java code in your solution. A general rule of thumb is that if you are communicating using a natural language, you are discussing at the design level, but if you are communicating using pseudo or actual code, you are discussing at the code level. For details on how the Honor Code applies to programs, consult the handout 'Honor Code Observation in Computer Science Courses.' Pair programming in recitations: There is considerable evidence to show that students who program together learn faster, infecting each other with their knowledge. Therefore, try the following: In each recitation, you do small exercises with a partner. Moreover, choose different partners in different recitations to ensure the knowledge infection proceeds rapidly in each partner the person with whom you have not partnered the longest. In each pair programming exercise, one person should be coding and the other advising. You should switch coding and advising roles every 10 minutes. The adviser is free to look up information on the computer to help the coder. Course Schedule If possible, a schedule of topics covered by the course organized by course date or week number. 1. Course Information, Introduction, and Scanning 2. Object-first Introduction to Programming 3. State and Properties 4. Interfaces 5. Graphics/Geometric Objects

Disclaimer 6. Composite Objects and Shapes 7. Trees, DAGs and Graphs 8. Inheritance 9. Type Checking with Inheritance 10. Arrays and Collections 11. Model View Controller and User-Interface Toolkits 12. Assertions and Exceptions 13. Adapters, Delegation 14. Animation, Threads and Command Objects 15. Composite Design Pattern, Visitor Objects The professor reserves to right to make changes to the syllabus, including project due dates and test dates. These changes will be announced as early as possible.