Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
South Portland, Maine 04106 Computer Science Program Title: Principles of Computer Science Catalog Number: CSCI 110 Credit Hours: 4 Total Contact Hours: 60 Lecture (or Lab): Lecture Instructor: Paul Richardson Office Hours – Location: Contact Information: 12:00-1:30 TR - ROSS TECH 210 [email protected] Course Syllabus Course Description This course will teach you how to design and write computer algorithms to solve a variety of problems using the Java programming language. Algorithms will be implemented as programs in Java. Topics include primitive data types and operations in Java, three types of control statements, methods, arrays and introduction of object-oriented concepts such as classes and encapsulation. Most of these topics are designed to provide students with tools that are useful when encountering computers in today’s workplace. Furthermore, they are designed to enhance problem-solving and logical reasoning abilities. Prerequisite: Successful completion of MATH 050 or higher or placement into a math course at or above MATH 145 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. • • Course Objectives Students completing this course will be able to solve computable problems using the Java programming language. After successfully completing the course, the student will be able to: Create variables to hold values during program execution. Demonstrate to ability to create functions to perform specialized tasks needed to solve problems. Describe number systems and representation of data in the computer. Demonstrate the ability to correctly sequence operations to solve computable problems. Demonstrate the ability to correctly use loops and decision structures. Summarize the uses of hash tables to solve appropriate computable problems Demonstrate an ability to use arrays to solve appropriate problems. Design and code solutions to computable problems using an appropriate computer language. Troubleshoot programs of their own and those provided by the instructor for debugging purposes. Implement non-recursive algorithms in Java Learning Outcomes This course seeks to develop the following core abilities: Global Awareness / Diversity – Identify resources and strategies needed to problem solve and/or achieve goals inclusive of diverse perspectives and experiences. Demonstrate the ability to work collaboratively with people from diverse backgrounds in pursuit of a common objective or goal utilizing interpersonal skills that are essential to team building, conflict resolution and cross-cultural communication. Critical Thinking – • • • • • • • • • • • • A student can interpret information logically by selecting and organizing relevant facts and opinions and identifying the relationships among them. A student can analyze an issue or problem by separating it into its component parts and investigating the relationship of the parts to the whole. A student can synthesize information by combining ideas from multiple sources to come to an independent conclusion. A student can evaluate information by making informed judgments as to whether the information is accurate, reliable or useful. A student can apply theory to practice. Communications – Demonstrate a command of the English language Identify and extract relevant data from written and oral presentations Quantitative Methods – Recognize problems that can be solved with quantitative methods Identify the quantitative components of a problem Select and appropriate mathematical method to solve a problem Demonstrate accurate computational and/or algebraic skills to solve a problem Estimate the reasonableness of answers to problems Attendance Policy: Students will be dropped from the course with a grade of AF if they miss 3 consecutive meetings or a total cumulative number of classes equal to 2 weeks of class (4 class meetings). Attendance on time for each class is expected. Cell Phones: Cell phones, text-messaging devices, and other social-networking connections may not be used in this class. If you bring such equipment to the classroom, it must be turned to vibrate before the class starts and stay that way throughout the class period. Use of such equipment is distracting to those nearby and will not be tolerated. Late Assignments: Projects are due by midnight the class following when they were assigned. Since this is an accelerated summer course any programs assigned on a Tuesday will be due two day later on Thursday. I will assign more difficult programs on Thursday so you have more time to work on them. Do NOT get behind in this class as all program build on earlier programs. A late penalty of 10 points per week will be earned. Learning Objectives Week 1 Ch 1 – Introduction to computers, programs, and Java To understand computer basics, programs and operating systems To describe the relationship between Java and the World Wide Web To understand the meaning of Java language specification, API, JDK and IDE To write a simple Java program To display output on the console To explain the basic syntax of a Java program To create, compile and run Java Programs To display output using the JOptionPane message dialog boxes To become familiar with Java programming style and documentation To explain the differences between syntax errors, runtime errors, and logic errors Week 1 Week 2 Week 2 Week 3 Ch 2 – Elementary Programming To write Java programs to perform simple computations To obtain input from the console using the Scanner class To use identifiers to name variables, constants, methods, and classes To use variables to store data To program with assignment statements and assignment expressions To use constants to store permanent data To name classes, methods, variables, and constants by following their naming conventions To explore Java numeric primitive data types: byte, short, int, long, float, and double To perform operations using operators: +, -, *, /, % To perform exponent operations using Math.pow(a, b) To write integer literals, floating-point literals, and literals in scientific notation To write and evaluate numeric expressions To obtain the current system time using System.currentTimeMillis() To use augmented assignment operators To distinguish between postincrement and preincrement and between postdecrement and predecrement To cast the value of one type to another To describe the software development process and apply it to develop the loan payment program To represent characters using the char data type To represent a string using the String type To obtain input using the JOptionPane input dialog boxes Ch 3 – Selections To declare boolean variables and write Boolean expressions using comparison operators (§3.2). To implement selection control using one-way if statements (§3.3). To implement selection control using two-way if-else statements (§3.5). To implement selection control using nested if and multi-way if statements (§3.6). To avoid common errors in if statements (§3.7). To generate random numbers using the Math.random() method (§3.8). To combine conditions using logical operators (&&, ||, and !) (§3.11). To program using selection statements with combined conditions (LeapYear, Lottery) (§§3.12– 3.13). To implement selection control using switch statements (§3.14). To write expressions using the conditional operator (§3.15). To format output using the System.out.printf method (§3.16). To examine the rules governing operator precedence and associativity (§3.17). To get user confirmation using confirmation dialogs (§3.18). To apply common techniques to debug errors (§3.19). Exam 1 Week 3 Week 4 Week 4 Week 5 Week 5 Ch 4 – Loops To write programs for executing statements repeatedly using a while loop (§4.2). To follow the loop design strategy to develop loops (§§4.2.1–4.2.3). To control a loop with a sentinel value (§4.2.4). To obtain large input from a file using input redirection rather than typing from the keyboard (§4.2.5). To write loops using do-while statements (§4.3). To write loops using for statements (§4.4). To discover the similarities and differences of three types of loop statements (§4.5). To write nested loops (§4.6). To learn the techniques for minimizing numerical errors (§4.7). To learn loops from a variety of examples (GCD, FutureTuition, MonteCarloSimulation) (§4.8). To implement program control with break and continue (§4.9). To write a program that displays prime numbers (§4.10). To control a loop with a confirmation dialog (§4.11). Ch 5 – Methods To define methods with formal parameters (§5.2). To invoke methods with actual parameters (i.e., arguments) (§5.2). To define methods with a return value (§5.3). To define methods without a return value (§5.4). To pass arguments by value (§5.5). To develop reusable code that is modular, easy to read, easy to debug, and easy to maintain (§5.6). To write a method that converts decimals to hexadecimals (§5.7). To use method overloading and understand ambiguous overloading (§5.8). To determine the scope of variables (§5.9). To solve mathematics problems using the methods in the Math class (§§5.10–5.11). To apply the concept of method abstraction in software development (§5.12). To design and implement methods using stepwise refinement (§5.12). Exam 2 Ch 6 – Single Dimensional Arrays To describe why arrays are necessary in programming (§6.1). To declare array reference variables and create arrays (§§6.2.1–6.2.2). To initialize obtain array size using arrayRefVar.length and know default the values in an array (§6.2.3). To access array elements using indexed variables (§6.2.4). To declare, create, and initialize an array using an array initializer (§6.2.5). To program common array operations (displaying arrays, summing all elements, finding the minimum and maximum elements, random shuffling, and shifting elements) (§6.2.6). To simplify programming using the for-eachfor-each loops (§6.2.7). Week 6 Week 6 Week 7 Week 7 Week 8 Week 8 To apply arrays in the application development (LottoNumbers, DeckOfCards) (§§6.3–6.4). To copy contents from one array to another (§6.5). To develop and invoke methods with array arguments and return values (§§6.6–6.78). To define a method with a variable-length argument list (§6.89). To search elements using the linear (§6.910.1) or binary (§6.910.2) search algorithm. To sort an array using the selection sort approach (§6.1011.1). To sort an array using the insertion sort approach (§6.1011.2). To use the methods in the java.util.Arrays class (§6.1112). Exam 3 Ch 7 – Multidimensional Arrays To give examples of representing data using two-dimensional arrays (§7.1). To declare variables for two-dimensional arrays, create arrays, and access array elements in a two-dimensional array using row and column indexes (§7.2). To program common operations for two-dimensional arrays (displaying arrays, summing all elements, finding min and max elements, and random shuffling) (§7.3). To pass two-dimensional arrays to methods (§7.4). To write a program for grading multiple-choice questions using two-dimensional arrays (§7.5). To solve the closest-pair problem using two-dimensional arrays (§7.6). To check a Sudoku solution using two-dimensional arrays (§7.7). To use multidimensional arrays (§7.8). Chapter 8 – Classes and Objects To describe objects and classes, and use classes to model objects (§8.2). To use UML graphical notation to describe classes and objects (§8.2). To demonstrate how to define classes and create objects (§8.3). To create objects using constructors (§8.4). To access objects via object reference variables (§8.5). To define a reference variable using a reference type (§8.5.1). To access an object’s data and methods using the object member access operator (.) (§8.5.2). To define data fields of reference types and assign default values for an object’s data fields (§8.5.3). To distinguish between object reference variables and primitive data type variables (§8.5.4). To use the Java library classes Date, Random, and JFrame (§8.6). To distinguish between instance and static variables and methods (§8.7). To define private data fields with appropriate get and set methods (§8.8). To encapsulate data fields to make classes easy to maintain (§8.9). To develop methods with object arguments and differentiate between primitive-type arguments and object-type arguments (§8.10). To store and process objects in arrays (§8.11). Final exam in two parts. Course Requirements Students will create 7 individual programming projects, take 3 tests during scheduled class times and complete a comprehensive final examination. Projects will involve computation, manipulation of data as well as searching and sorting arrays. Students should expect to spend 810 hours per week outside of class working on projects, homework and course preparation. Student Evaluation and Grading Three in-class tests Programs, Homework, Quizzes Final Exam (Comprehensive) 30% 50% 20% Grading Scale: 93 – 100 90 - 92.99 87 - 89.99 83 - 86.99 80 - 82.99 77 - 79.99 73 - 76.99 70 - 72.99 0 - 69.99 A AB+ B BC+ C CF Text, Tools and / or Supplies Introduction to Java Programming 9e by Daniel Liang. ISBN-13: 978-0-13-293652-1. This text will be used for CSCI 160 and CSCI 290 as well. You should have a notebook for taking notes and a writing instrument. It is strongly recommended that the student have a USB drive to store backup copies of all programming assignments. A composition book for your homework is required. These will be graded on exam days. End-of-Course Evaluation In order to gain access to final course grades, students must complete evaluations for each course attended at SMCC. Evaluations are submitted online and can be accessed through the student portal site. Students can access the course evaluation report beginning two weeks before the end of classes. The deadline for submission of evaluations occurs 24 hours after the last day of classes each semester. Instructors will announce when the online course evaluation is available. ADA (Americans with Disabilities Act): Southern Maine Community College is an equal opportunity/affirmative action institution and employer. For more information, please call 207-741-5798. If you have a disabling condition and wish to request accommodations in order to have reasonable access to the programs and services offered by SMCC, you must register with the Disability Services Coordinator, Sandra Lynham, who can be reached at 741-5923. Further information about services for students with disabilities and the accommodation process is available upon request at this number. Course policies about online testing are modified to suit each individual’s accommodations. SMCC Pay-for-Print Policy In an effort to control the escalating cost of supplies and to encourage students to conserve resources, SMCC charges for printing. Students receive a $20 credit every semester. This credit resets for each semester and extra credit is not rolled over to the next semester. Per page costs are as follows: 8.5"x11" black and white: $0.10 per page 8.5"x11" color: $0.50 per page 8.5"x14" and 11"x17" black and white: $0.20 per page 8.5"x14" and 11"x17" color: $1.00 per page Duplex (two-sided) pages are discounted 50% from the listed page costs. Students can monitor their remaining credit and number of pages printed by visiting the IT Help tab on MySMCC or by checking the Printing Information icon in the lower right corner of the screen while logged in to an SMCC computer. More information about the Pay-for-Print Policy is available on the IT Help tab on MySMCC. Add-Drop Policy Students who drop a course during the one-week “add/drop” period in the fall and spring semesters and the first three days of summer sessions receive a 100% refund of the tuition and associated fees for that course. Please note any course that meets for less than the traditional semester length, i.e., 15 weeks, has a pro-rated add/drop period. There is no refund for nonattendance. Withdrawal Policy A student may withdraw from a course only during the semester in which s/he is registered for that course. The withdrawal period is the second through twelfth week of the fall and spring semesters and the second through ninth week of twelve-week summer courses. This period is pro-rated for shorter-length courses. To withdraw from a course, a student must complete and submit the appropriate course withdrawal form, available at the Enrollment Service Center (no phone calls, please). The designation “W” will appear on the transcript after a student has officially withdrawn. A course withdrawal is an uncompleted course and may adversely affect financial aid eligibility. Failure to attend or ceasing to attend class does not constitute withdrawal from the course. There is no refund associated with a withdrawal. Plagiarism Statement Adherence to ethical academic standards is obligatory. Cheating is a serious offense, whether it consists of taking credit for work done by another person or doing work for which another person will receive credit. Taking and using the ideas or writings of another person without clearly and fully crediting the source is plagiarism and violates the academic code as well as the Student Code of Conduct. If it is suspected that a student in any course in which s/he is enrolled has knowingly committed such a violation, the faculty member should refer the matter to the College’s Disciplinary Officer and appropriate action will be taken under the Student Code of Conduct. Sanctions may include suspension from the course and a failing grade in the course. Students have the right to appeal these actions to the Disciplinary Committee under the terms outlined in the Student Code of Conduct. CSCI 110 – Collaboration Policy CLASSWORK / HOMEWORK You may collaborate on CLASS WORK ASSIGNMENTS in and out of class. However, your final answers MUST be YOUR OWN. This means that you MAY work together to solve the problems, but the final answers must be done INDEPENDENTLY. (You may NOT copy another person’s work!) QUIZZES and TESTS No discussion of any kind with anyone but the instructor is allowed. Use of unauthorized written material, cell phones, or other messaging tools is not allowed. PROJECTS Discussion of techniques in a natural language (such as English) is allowed. Discussion of an assignment in a computer or algorithmic language (such as Java) is NOT allowed. Strictly avoid sharing or exchanging literal statements of computer code or program files. Computer language questions are to be limited to the language and should not concern the assignment. WHEN IN DOUBT, SEE THE INSTRUCTOR! Stealing, giving or receiving passwords, code, designs, drawings, diagrams and/or text from ANY other person (whether from on-campus or offcampus) is NOT allowed. Every line of code that you turn in must be your own! Any of the following also constitutes cheating: 1. Having a copy of a program that is not your own. 2. Accessing or viewing anyone else’s work. 3. Giving anyone else access to your work. 4. Attempting to collaborate on projects. 5. Attempting to deceive the instructor. Student responsibilities include: 1. Secure disposal of code and report of missing printouts. 2. Avoidance of other students who act unethically. 3. Keeping your program solutions to yourself. The Penalty Violations of the collaboration policy will be dealt with according to the code of Academic Misconduct as outlined above. I have read, and understand the syllabus and collaboration policy for CSCI110. PRINT Name (last, first, mi): _____________________________________________ Signature: ______________________________________