APCS-A Summer HW

Congratulations to the fifteen 2019-2020 DMHS Computer Science students who earned MTA Certifications!
Sophomores: Joey (Junhwan) Lim, Ayline Orihuela, Nicholas Tran, Tyler Tran, Rodrigo Vallejo
Juniors: Genesis Gumban, Reese Henson, Jimmy Le, Alex Redford, Chanh Tran
Seniors: Wesley Jiang (UC Berkeley), Abrar Karim (UC Berkeley),
Jason Li (M.I.T.), Camilo Morales (Harvey Mudd College), Kirsten Tapalla (Brandeis University)

Note: This sketch uses/requires the fonts:
Rage Italic and Lucida Handwriting
 Multiple Comets   Dynamic Word Cloud 

The COMPUTER SCIENCE Program at Downtown Magnets High School

Student Work/Projects

CS Year 1:
Word Clouds

CS Year 2
(AP Computer Science):
Knight's Tour
AI (Artificial Intelligence)

CS Year 2
(AP Computer Science):
Playing Cards,
Evaluating Poker Hands

CS Year 3: Finding Introns and Exons Computationally

CS Year 2
(AP Computer Science):
Sudoku Puzzle SOLVER

CS Year 2
(AP Computer Science):
Sudoku Puzzle Generator, Part 1 (Recursion)

Most people have some familiarity with the
"traditional" subfields of Computer Science,
like Artificial Intelligence or Robotics.

However, 21st-century Computer Science is
an integral part of research and discovery
in an ever-growing number of fields across
the STEM and Humanities spectrum, including:

Language Translation,
Cancer Research and Treatment,
Bioinformatics, Molecular Modeling,
Astronomy and Space Exploration,
GPS Applications (e.g. Routing),
Machine Learning, Big Data,
Generative Art and Animation,
Computational Linguistics,
Computational Journalism,
♫ Synthesized Music ♪
... and on and on.

Whatever the application, though, the ability to PROGRAM
is the fundamental core skill needed to understand – and create –
computational solutions for problems in these fields and others.

More importantly, programming is also the GATEKEEPER skill
that provides access to a CS college major and/or computing job.*


*Unfortunately, most "Computer Science" programs in LAUSD
– particularly the "Exploring Computer Science" and "APCS Principles" courses –
give only a superficial exposure to programming, if that:
Students develop no deep knowledge of this fundamental Computer Science skill.

Although the long-taught "introductory" college level "AP Computer Science A" is
a serious programming course, it is NOT an introductory high school course.
To succeed in and pass "APCS A", the vast majority of high school students
first require a year-long introductory programming course.

A myth persists in popular culture
that learning to "code" is easy.

The reality is that
learning to program WELL
is a skill that is acquired
over years, not months ...
... like a foreign language.

The analogy to learning a
foreign language goes far deeper.

A recent cutting-edge fMRI study*
has demonstrated that programming
languages are processed
NOT in math- or logic-
related regions of the brain,
but rather in brain regions
that deal with LANGUAGE.

*Understanding Understanding Source Code with functional Magnetic Resonance Imaging (fMRI)
by Siegmund et al.

This research finding has
sobering implications for
how students actually

learn to program ...

... and for teaching as well.

Portnoff, Scott R. Unpublished Blog (August 2020)
Part 1: Inequitable Learning Outcomes for AP Computer Science Principles
Part 2: Learning Failure Data for Exploring Computer Science (ECS)

Portnoff, Scott R. ACM Inroads 11,2 (June 2020), 22-45. doi: 10.1145/3381026
A New Pedagogy to Address the Unacknowledged Failure of American Secondary CS Education.

Portnoff, Scott R. ACM Inroads 9,2 (June 2018), 34-52. doi: 10.1145/3152433
The Introductory Computer Programming Course is First and Foremost a LANGUAGE Course.

Portnoff, Scott R., M.S. Thesis. California State University, Los Angeles, 2016, 262; 10132126
(1) The case for using foreign language pedagogies in introductory computer programming instruction.
(2) A contextualized pre-AP computer programming curriculum: Models and simulations for exploring
real-world cross-curricular topics.

ACM Inroads 9, 2 (June 2018), Pages 34-52

ACM Inroads, Issue 11, 2 (June 2020), Pages 22-45

CS Courses

The introductory/freshman programming course, a UCOP-approved "G"-elective, is called

Computer Science 1: Animation, Simulation and Game Programming

(a) The focus is on how CS can be used in the Real World, and
(b) The course uses instructional strategies informed by principles from the field of Second Language Acquisition.

Students learn the fundamentals of programming by writing Java applications (software programs)
modeled after software programs that fill a SOCIAL or SCIENTIFIC PURPOSE*.

*For example, the Solar System program below is modeled after Planetarium software used for astronomical observations and space exploration.
The Molecular Modeling program, also below, is modeled after Molecule Viewer software used to aid drug and medical research.

Students program in Processing (a dialect of Java),
which is a free and simple – but extremely powerful – programming development tool
designed for Visual Artists to create computer art and animations.

Advanced Courses offered to students who successfully complete CS1 are:

1.  Generative Art/Design (the artistic medium is the Computer Program)
a UCOP-approved "F"-elective

2.  APCS-A: Advanced Placement Computer Science A
a UCOP-approved "G"-elective

3.  Java Advanced Data Structures & Introduction to Bioinformatics
UCOP-approved HONORS "G"-elective

Semi-Annual Field Trip to CS Dept at Harvey Mudd College (2013)

CS1 and Generative Art Projects

Click on hyperlinks to view Processing programs of the projects below.

Around the World in 24 Days

Molecular Modeling to Investigate
DNA Base Pair Hydrogen Bonding

Oscillating McClure
Rhombus Painting

Music Animation / Visualization

Galileo's Revolution: The Copernican Model of the Solar System