Course Materials for AP Computer Science A with EEI (2018-2019)
For most recent updates and announcements, please see the issues for this repository.
- Instructor: Alyssa Fegen, BSc. Combined Major - Computer Science & Microbiology
- Contact: Email
- Location: Elite Educational Institute - Richmond Campus (5560-8181 Cambie Rd, Richmond, BC V6X 3X9)
- Class Time: Mondays, 15:45 - 17:45 (2 hours a week, 25 Classes Total i.e. 50 hours of in-class instruction time)
Classes are modeled after university-style CS courses and will vary, but generally have one or a mix of the following structures:
- Lecture and class discussion on new concepts and syntax from the current topic
- Collaborative exercises/examples/problems involving the whole class to work together to create a solution, usually involving coding (on paper or on a laptop)
- Individual/collaborated free time to work on the current assignment/lab with supervision
BEFORE CLASS:
- Readings and/or videos may be assigned to students to read/watch prior to the next class to be prepared. Please take a look at the GitHub issues regularly to find out what you need to prepare.
- Collect any printouts/worksheets for class from my pigeonhole when you arrive. Readings will be distributed in topic bundles prior to the beginning of the next topic.
- If you need to bring a laptop to the next class, I will announce it in the issues before the next class
AFTER CLASS:
- Working together on assignments/labs is allowed, but directly copying code from each other or plagiarizing code from the web is not. Assignments/labs will be submitted on GitHub so that submissions can be tracked. GitHub issues will be used to delegate these assignments and labs and establish their deadlines.
- Students may seek assistance from me or other classmates for assignments/labs via GitHub. I will allot 30-60 minutes a weekday addressing any questions. For information on formatting your comments, refer to this GitHub markdown cheatsheet.
- Email communication should be reserved for only very URGENT assignment/lab/exam-related questions, administrative issues (e.g. unable to attend/late to class) or other clarifications. I am unlikely to share my cellphone number with students.
ASSESSMENT:
- Progress will be monitored using these assignments and labs. If time permits, I may assign a coding project for students to work on over the spring break, and online tests/quizzes at the end of each topic.
- I will try my best to make sure that the last class before the exam will be a review and Q + A session with a mock exam for practice and going through the answers together.
- Course Language: Java
- Development Environment: Eclipse IDE - Setup Instructions
- Version Control: GitHub - Setup Instructions | Tutorial
- Prerequisites: Basic understanding of English, Algebra, Functions, and Mathematical Reasoning
- Design, implement, and analyze solutions to problems
- Use and implement commonly used algorithms
- Develop and select appropriate algorithms and data structures to solve new problems
- Write solutions fluently in an object-oriented paradigm
- Write, run, test, and debug solutions in the Java programming language, utilizing standard Java library classes and interfaces from the AP Java subset
- Read and understand programs consisting of several classes and interacting objects
- Read and understand a description of the design and development process leading to such a program
- Understand the ethical and social implications of computer use
NOTE: While the exam determines your final grade, the course MUST include at least 20 hours of hands-on lab experiences. Details on these labs can be found in the class schedule/topic outline.
- DATE: Friday, 17 May 2019
- TIME: 12:00 - 15:00
- DURATION: 3 Hours
- LOCATION: Vancouver School Board Education Centre, 1580 W Broadway, Vancouver, BC V6J 5K8
- Section I: 40 Multiple Choice Questions | 1 H : 30 Min | 50% of Final Score
- Section II: 4 Free Response Questions | 1 H : 30 Min | 50% of Final Score
Score | Recommendation |
---|---|
5 | Extremely well qualified |
4 | Well qualified |
3 | Qualified |
2 | Possibly qualified |
1 | No recommendation |
You must register for an AP College Board Student account in order to view your score.
As with any exam, there are certain rules you need to follow, such as what and what not to bring to the exam, in order for your exam submission to be valid. These can be found in the Bulletin for AP Students and Parents 2018-19 that you should read prior to registering and taking the exam. On the exam day, you will be signing a statement indicating that you have read and agree to the policies outlined in the bulletin before you can take the exam.
If you require test accommodations due to a documented disability, you must request these accommodations from the College Board Services for Students with Disabilities office by 22 February 2019.
Generally, the cost of taking the exam in the US and Canada is $94. However, additional fees (e.g. administrative fees) may apply depending on which testing centre you are taking the exam at. If you decide to take the exam on another date during the late-testing period, there will be an additional $45 charge. In some cases, if you have paid for the exam but decided not to take it, contact your AP coordinator for a refund. The amount refunded will vary, but you will probably be charged the $15 fee that the school is charged for each unused exam.
If you have significant financial need, you may be eligible for a $32 College Board fee reduction per AP Exam, depending on your location. Check with your AP coordinator to learn more about eligibility requirements for College Board fee reductions, state/provincial and district/municipal subsidies, and other support that may be available.
Depending on the university you are intending to apply to, your exam score will determine if you are allowed to receive credits for corresponding Computer Science courses. You can find information on the minimum score required (usually 4), amount of credits you'll receive for attaining that score (usually 3), and the course(s) you get exemption from if you achieve the score, for each eligible institution over here.
As you are taking this course externally and if you intend to take the exam, you must first contact AP Services for Students to get information about local nearby AP coordinators by 1 March 2019. You can contact them anywhere below:
- +1 (888) 225-5427 (Toll-free in the US and Canada)
- +1 (212) 632-1780
- apstudents@info.collegeboard.org
After that, you must register independently by 15 March 2019, by contacting the AP coordinators identified by AP services to arrange a testing for you. More information is available here
It is recommended you do this in advance to ensure that the locations you are interested in administer the AP Computer Science A exam, and to ensure that there is a spot available for you to take the exam in your desired location (first-come, first-served).
After learning all the course material, labs will be used to apply the material to better understand it. In addition, there will be programming assignments and maybe a capstone project to further utilize this material in practice as well. EEI has several practice examinations in addition to the past exams available on the AP site, and students will undergo rigorous mock testing and exam question discussion and problem-solving in the weeks prior to the exam. Review and Q&A sessions will be provided as needed, and I will be available to answer questions in GitHub as well.
- Java Quick Reference - IMPORTANT, provided in your AP exam booklet
- AP Java Subset - not included in exam booklet but all code in the AP exam is consistent with this subset
- Javadocs - detailed useful specifications of the entire Java 7 API
- Free Online Java Programming Textbook - great for beginners
- Popular Java book - just for your information, absolutely not necessary for this course
- AP Computer Science Study Guide - good summary but also contains extra information not in the AP subset
There is no required text that you will need to purchase for this course. However, most of the materials in this course will be based on these books, which have great summaries of the concepts, and lots of practice questions and exams, so they are recommended for your own self-study if you wish:
- Barron's AP Computer Science A - 8th Edition
- McGraw Hill 5 Steps to a 5 - AP Computer Science A (2017)
I also may be incorporating anything I might have learned from the following selection of Computer Science courses I have completed at UBC that I think may be relevant:
- CPSC 110: Systematic Program Design
- CPSC 121: Models of Computation
- CPSC 210: Software Construction
- CPSC 221: Basic Algorithms and Data Structures
- CPSC 310: Introduction to Software Engineering
I also have digital copies of the following (quite dated) books that may potentially be helpful with this course and I am willing to lend to students:
- O'Reilly Head First Object-Oriented Analysis & Design
- O'Reilly Head First Software Development
- O'Reilly Head First Java
- Java: A Beginner's Guide (Third Edition) - Herbert Schildt
- StackOverflow - Every developer uses this forum. 99% of the time you're Googling a CS-related question, you will be led here.
- TutorialsPoint - simple explanations with great examples
Collection in progress :)
- Object-Oriented Program Design - 4 Lessons
- Program Implementation - 3 Lessons
- Program Analysis - 3 Lessons
- Standard Data Structures - 5 Lessons
- Standard Operations and Algorithms - 5 Lessons
- Computing in Context - 1 Lesson
TOPIC | WEEK | DATE | DETAILS | PREP | LECTURE NOTES | ASSIGNMENT(S) | LAB |
---|---|---|---|---|---|---|---|
1 | 1 | 05/10/2018 | Intro to the Java language, Object-Oriented Programs, and Basic Program Design Approaches | ❌ | here | ✅ | ❌ |
08/10/2018 | THANKSGIVING | ||||||
1 | 2 | 16/10/2018 | Elementary Java Syntax and Bit Conversion | ✅ | here | ❌ | ❌ |
1 | 3 | 23/10/2018 | Inheritance and Polymorphism | ❌ | here | ✅ | ✅ |
1 | 4 | 30/10/2018 | Abstract Classes, Interfaces, and UML Diagrams | ✅ | here | ✅ | ✅ |
2 | 5 | 06/11/2018 | Memory Allocation, Operators, and Boolean Expression Evaluation | ❌ | here | ✅ | ❌ |
2 | 6 | 13/11/2018 | Control Flow, Scopes, and Iteration | ✅ | here | ✅ | ❌ |
7 | 20/11/2018 | CANCELLED | ✅ | ❌ | ✅ | ❌ | |
2 | 8 | 27/11/2018 | Recursion, Implementation Techniques, and I/O | ✅ | here | ✅ | ❌ |
3 | 9 | 04/12/2018 | Software Development Life Cycle (SDLC) | ❌ | here | ✅ | ❌ |
3 | 10 | 11/12/2018 | Program Correctness and Testing | ❌ | here | ✅ | ✅ |
3 | 11 | 18/12/2019 | Algorithm Efficiency | ✅ | here | ✅ | ✅ |
25/12/2018 | CHRISTMAS DAY | ||||||
01/01/2019 | NEW YEAR'S DAY | ||||||
12 | 08/01/2019 | CANCELLED | ❌ | ❌ | ❌ | ❌ | |
4 | 13 | 14/01/2019 | Object Class, String Class, and Math Class | ❌ | here | ✅ | ❌ |
4 | 14 | 21/01/2019 | Arrays, Array Lists, Collections, and 2-D Arrays | ✅ | here | ✅ | ❌ |
4 | 15 | 28/01/2019 | AP Lab: Magpie | ✅ | here | ✅ | ✅ |
16 | 04/02/2019 | CANCELLED | ❌ | ❌ | ❌ | ❌ | |
17 | 11/02/2019 | CANCELLED | ❌ | ❌ | ❌ | ❌ | |
18/02/2019 | FAMILY DAY | ||||||
5 | 18 | 25/02/2019 | Common Basic Algorithms | ❌ | here | ✅ | ❌ |
5 | 19 | 04/03/2019 | Searches & Sorts | ✅ | here | ✅ | |
6 | 20 | 11/03/2019 | Computing in Context | ❌ | TBD | ❌ | ❌ |
18/03/2019 | SPRING BREAK | ||||||
25/03/2019 | SPRING BREAK | ||||||
21 | 01/04/2019 | CANCELLED | |||||
+ | 22 | 08/04/2019 | Review + Exam Prep | ||||
+ | 23 | 15/04/2019 | Review + Exam Prep | ||||
+ | 24 | 22/04/2019 | Review + Exam Prep | ||||
+ | 25 | 29/04/2019 | MOCK EXAM | ||||
+ | 26 | 06/05/2019 | Review + Exam Prep | ||||
+ | 27 | 13/05/2019 | Review + Exam Prep | ||||
17/05/2019 | EXAM DAY |
subject to change