Solving Complex Problems Through Programming Syllabus


Course Description

Solving Complex Problems Through Programming (also known as advanced programming) is an entry-level course for students to learn programming and design. The course is a year-long course.

The course is designed to be “fun and hard”. You will build your programming skills using real-world tools. You will carefully design a python application and then program the application. You will learn how to use git, advanced coding techniques, and more.

After you understand this, you will build two applications. Students who leave this course usually transition to IB Computer Science.

Teacher

Teacher: Bill MacKenty, M.Ed.
Teacher email: bmackenty@aswarsaw.org
Teacher room: H121

American School of Warsaw
Bielawa. 202 Warszawska Ul.
05-520 Konstancin-Jeziorna
POLAND
https://www.aswarsaw.org
https://www.mackenty.org

Course Aims

  • Students will describe our course materials, scope, communications and tools
  • Students will learn the python programming language
  • Students will learn advanced python programming language
  • Students will apply their understanding of Python to create simulations and models
  • Students will describe and discuss multiple types of models
  • Students will learn about matching text using regular expressions
  • Students will describe and discuss the limitations and precision of a model
  • Students will use their understanding of API’s to extend their programs complexity
  • Students will use the data from API’s to create solutions
  • Students will understand how bots work and write bots on various platforms
  • Students will understand the design process
  • Students will understand characteristics of a complex problems
  • Students will construct two different solutions for a complex problem

Course Topics

The following topics are addressed in this course:

  • Course orientation
  • Programming
  • Computational thinking
  • Abstract data structures
  • Development
  • Design: Understanding a Problem
  • Design: Developing Ideas
  • Design: Creating the Solution
  • Design: Evaluation

Assessment Criteria

The major assessment in this course is to plan, design, create, and evaluate two applications.

For each application, you need to do four things really well:
There are many other minor assessments related to these two projects. For example, you will need to learn about python in order to build a simulation. You’ll be assessed on your understanding and skill of python.

  1. Become an expert in your design (we call this Inquiry and Analysis)
  2. Create a really good plan to solve your problem (we call this Developing Ideas)
  3. Be a true craftsperson and make good changes when the need arises (we call this Creating the Solution)
  4. Figure out if you solved the problem you set out to solve (we call this Evaluation)

You will also be assessed on your approaches to learning - skills which help you be a better student.

Required Materials

Required materials include a school-issued computer with all software updated as directed in our getting started guide. Please make sure to bring your computer to school fully charged.

Communication

Here is a guide how you can communicate with me. I am available most of the time. You should be aware of advantages and disadvantages for each method of communication:

Speak to me in person

  • Advantages: You can gauge my reaction to an initial idea. This method is good for quick, yes/no questions. I’ll tell you if your question isn’t quick to answer.
  • Disadvantages: Most problems are complex. It takes time to understand them and solve them.

Send me an email In-depth questions, with evidence that you have followed our guide to asking good questions will get replies.

  • Advantages: Messages are private.
  • Disadvantages: I don’t respond to emails very quickly, and if your question is complex, it will take me more time to answer it. Also, if there is a lot of back-and-forth between us about your question, emails might make it hard to follow.

Ask a question in our class discussion board

  • Advantage: Other people can learn from your question. Other people can help answer your question. Messages are threaded and topics are organized logically. You can quote code samples and include attachments.
  • Disadvantage: Answers to your questions might take a bit longer, especially if they are complex.

Ask a question on google classroom

  • Advantage: Don’t try to communicate with me on google classroom. It won’t work.
  • Advantage: Don’t try to communicate with me on google classroom. It won’t work.

Course Policies

Exam re-takes

I do not allow students to retake exams. Many students get the idea that they don’t have to take a test seriously until the retake. Students and parents are reminded a grade is a single data point, not to be considered as a single point upon which all success and failure rests.

Extra-Credit

I want you to work hard and learn. There are times when you may want to earn extra credit. Extra credit does not automatically improve your grade. Here are some things to think about before you accept an assignment for extra credit:

  1. The assignment will be graded with the same rigor as other assignments (extra credit isn’t easy)
  2. You must treat an extra credit assignment as a regular assignment. If you do not turn it in, or do not meet the standard, you may further harm your progress
  3. You will have clear criteria (a rubric) for your extra credit
  4. Extra credit is almost always service-oriented. Your teacher alone determines what qualifies for extra credit.
  5. You must always ask for permission for extra credit prior to doing the work.

Class Rules

1. Listen and follow directions

2. Raise your hand before speaking or leaving your seat

3. Respect your classmates and your teacher

4. Keep hands, feet, and objects to yourself

5. Do not disrupt our learning environment

6. Work hard in our class

7. Be curious

8. Be kind

Statement of Academic Integrity

You are responsible for understanding and following these guidelines.

From the Student Handbook:

Academic integrity is an expected trait in all students of ASW and is afforded the utmost value by all members of the faculty. The academic reputation of our students and the school in the wider community depend on it. Academic integrity expectations extend to all assessed and non-assessed school work and to all documentation produced for university and college applications. It is the expectation at ASW that all work and documentation submitted by students is entirely their own.

To ensure that high school students understand what constitutes academic honesty, teachers explicitly address the issue with all students at the start of each academic course.

Academic integrity means:

Citing appropriately those whose work is used in the preparation of school work completing school work without the input of others whose knowledge of the task might advantage the student unfairly submitting work for assessment that is representative of the student’s own learning and not that of others, individually or collectively maintaining a level of confidentiality and personal ownership of one’s own work, both assessed and non-assessed

Conversely, academic dishonesty means:

Presenting the work, ideas, words, images, data or arguments of others as one’s own without citation (plagiarism) copying or sharing work with others (unless specifically allowed) in any form (e.g. digitally sharing, downloading, in person) in a way that misrepresents a student’s ability or is intended to mislead the intended audience presenting work as one’s own which has been completed with the assistance of others (such as parents, other students or tutors) in a way that misrepresents a student’s ability making up or altering references, quotations, statistics, etc. (fabrication or falsification)
When a faculty member determines that there has been a breach of academic integrity, the faculty member is required to inform the Principal of the incident.

Prerequisites

Students should have some experience programming and solving problems. Students should enjoy computers and puzzles. Prior programming experience is not required but really helps.

Course Calendar

Topic Notes Week Starting
Course orientation

Class rules, how you are graded, setting up your computer, communicating with your teacher

Tuesday 20 August 2019
Course orientation

The “developer workflow”, the nature of programming languages, python

Monday 26 August 2019
Programming

Programming, selection and iteration, data types

Monday 02 September 2019
Programming

Programming, advanced data types

Monday 16 September 2019
Programming

Programming, lists data structure, file i/o, JSON

Monday 23 September 2019
Programming

Problem sets and practice

Monday 30 September 2019
Programming

Problem sets and practice

Monday 07 October 2019
Design: Understanding a Problem

Design Cycle, review assessment, start your first project

Monday 14 October 2019
Design: Developing Ideas

Design Cycle, review assessment, start your first project. We will primarily focus on system diagramming.

Monday 21 October 2019
Holiday

Happy Holidays!

Monday 28 October 2019
Design: Developing Ideas

Presenting your idea is an important part of the design cycle. We’ll cover that in this week.

Monday 04 November 2019
Design: Creating the Solution

You will follow your plan, justify technical changes and demonstrate technical expertise.

Tuesday 12 November 2019
Design: Creating the Solution

You will follow your plan, justify technical changes and demonstrate technical expertise.

Monday 18 November 2019
Design: Creating the Solution

You will follow your plan, justify technical changes and demonstrate technical expertise.

Monday 25 November 2019
Design: Creating the Solution

You will follow your plan, justify technical changes and demonstrate technical expertise.

Monday 02 December 2019
Design: Evaluation

Did you solve the problem you set out to solve?

Monday 09 December 2019
Holiday

Enjoy your holiday!

Monday 16 December 2019
Holiday

Enjoy your holiday!

Monday 23 December 2019
Holiday

Enjoy your holiday!

Monday 30 December 2019
Course orientation

We will refresh after our break and remember our fundamentals.

Tuesday 07 January 2020
Programming

We will learn about GUI’s in Python

Monday 13 January 2020
Design: Understanding a Problem

We begin our second design.

Monday 20 January 2020
Design: Understanding a Problem

We begin our second design.

Monday 27 January 2020
Design: Creating the Solution

Find a solution to your problem.

Monday 03 February 2020
Design: Developing Ideas

Find a solution to your problem.

Monday 10 February 2020
Design: Creating the Solution

We will focus on creating your plan.

Monday 17 February 2020
Holiday

Enjoy your holiday.

Monday 24 February 2020
Design: Creating the Solution

You will follow your plan, justify technical changes and demonstrate technical expertise.

Tuesday 03 March 2020
Design: Creating the Solution

You will follow your plan, justify technical changes and demonstrate technical expertise.

Monday 09 March 2020
Design: Creating the Solution

You will follow your plan, justify technical changes and demonstrate technical expertise.

Monday 16 March 2020
Design: Creating the Solution

You will follow your plan, justify technical changes and demonstrate technical expertise.

Monday 23 March 2020
Design: Creating the Solution

You will follow your plan, justify technical changes and demonstrate technical expertise.

Monday 30 March 2020
Design: Evaluation

Did you solve the problem you set out to solve?

Monday 06 April 2020
Design: Evaluation

Did you solve the problem you set out to solve?

Tuesday 14 April 2020
Abstract data structures

We begin advanced programming.

Monday 20 April 2020
Holiday

Enjoy your holiday!

Monday 27 April 2020
Abstract data structures

We continue our learning on abstract data structures, and more advanced programming.

Monday 04 May 2020
Computer organization

How do computers actually work? How does a CPU actually work?

Monday 11 May 2020
Computer organization

How do computers actually work? How does a CPU actually work?

Monday 18 May 2020
Computer organization

How do computers actually work? How does a CPU actually work?

Monday 25 May 2020
Programming

Advanced programming.

Monday 01 June 2020
Programming

Advanced programming

Monday 08 June 2020
Programming

Advanced programming

Monday 15 June 2020