By Suman Tripathy For many students, myself included, their first exposure to Computer Science is through the AP Computer Science A course in high school. Advanced Placement (AP) courses are designed for high schoolers to learn subjects with the rigor, depth, and complexity of college classes. Taking AP classes can also boost a student's weighted GPA. The AP Computer Science A curriculum emphasizes the fundamental concepts and problem solving skills that Computer Science requires, using the Java programming language. It introduces basics like variables, loops, conditionals, and methods, along with object-oriented programming, data structures, algorithms, and software design strategies. Java is a widely used programming language, useful and multifaceted because it can support abstraction, encapsulation, and object-orientation, all of which are important concepts for software engineering. The official prerequisite for AP Computer Science A is first-year high school algebra, including function notation and other algebraic problem solving skills. Overall, the course recommends a solid foundation in mathematical reasoning. However, having worked with many students taking this course, we have found that some prior coding experience really helps students be successful in this course. At Juni, we recommend students who are new to programming start with our Python Level 1 and sometimes our Python Level 2 course before moving into Java. The College Board's AP Computer Science A ExamTo receive college credit, students must register to take the College Board AP exam through their school, administered in May of each year. In 2017, the College Board introduced a second computer science AP course, AP Computer Science Principles. Compared to AP Computer Science A, this course "focuses on the broader aspects of computing, including not only programming but also topics like the global impact of computing, the internet and cyber-security, and creativity" (College Board). At Juni, we only offer the AP Computer Science A course. The AP Computer Science A exam is a three hour test. The first half includes 40 multiple choice questions and accounts for 50% of the exam score. The second half includes four free response questions focused on program design, implementation, and problem solving, and it makes up the remaining 50% of the exam score. All of the questions on the AP exam involving coding use Java as the primary programming language, and test booklets include the Java Quick Reference that includes all of the accessible methods from the Java library that the AP exam may reference. Goals of the AP Computer Science curriculum include:
Score Recommendation 5 Extremely well qualified 4 Well qualified 3 Qualified 2 Possibly qualified 1 No recommendation Ways to PrepareMost students who take the AP Computer Science A take the course in high school. However, it is possible to self-study for the exam successfully. Thankfully, many great online resources exist for students! The College Board itself has numerous helpful materials. For example, they offer a compilation of various exam tips and tricks, in addition to a test bank of each year’s free response questions, multiple-choice, sample answers, and scoring guidelines to ensure transparency and fairness in grading. Barron's, another well-known test prep company, sells a great book for this course and offers an online practice exam as well. Johns Hopkins Center for Talented Youth also offers this as an online course. At Juni Learning, we offer AP Computer Science A as a course with a private instructor that covers all of the topics on the AP exam in depth. With our classes, students are paired one-on-one with an instructor who works on concepts and test prep, tailored to the student's specific needs. With us, some students fully self-study for the AP exam, while others are simply getting exposure to the material in preparation for the school year ahead. Our AP Computer Science A course is broken down into the following modules:
Advice From Former AP Computer Science StudentsWe asked Juni instructors who took AP Computer Science in high school on what they did to prepare for the AP exam and any advice that they would give current students. Here is some of their advice:
Final ThoughtsThere are many different resources and programs that can help students prepare for the AP Computer Science A exam. The best fit depends on the student's learning style and time constraints. Overall, the AP Computer Science A course is a great opportunity to learn the fundamentals of computer science and demonstrate proficiency to colleges. Passing the AP exam is a great way to earn some college credit, but more importantly it helps develop a lifelong technical skill that helps one think in new ways. This article originally appeared on junilearning.com Suman Tripathy holds a B.S. in Electrical Engineering and Computer Science from UC Berkeley. Next fall, she will be moving to New York to pursue her Master's in Data Science. She is currently a Senior Instructor at Juni Learning. You can often find her camped out at Philz Coffee reading books and listening to music!
0 Comments
By Ananya Rao What Is An Algorithm?algorithm is a set of step-by-step procedures, or a set of rules to follow, for completing a specific task or solving a particular problem. Algorithms are all around us. The recipe for baking a cake, the method we use to solve a long division problem, and the process of doing laundry are all examples of an algorithm. Here’s what baking a cake might look like, written out as a list of instructions, just like an algorithm:
Types of AlgorithmsAlgorithms are classified based on the concepts that they use to accomplish a task. While there are many types of algorithms, the most fundamental types of computer science algorithms are:
Example of an Algorithm: Solving a Rubik’s Cube There are a number of different algorithms, from simple to very complicated, that exist for solving a Rubik’s cube. Below is just one simple algorithm. First, let’s specify a notation to use (similar to picking a programming language). Each of the six faces of a Rubik’s cube can be represented by the first letter of their name:
Step 1: The Cross
Sorting AlgorithmsA sorting algorithm is an algorithm that puts elements of a list in a certain order, usually in numerical or lexicographical order. Sorting is often an important first step in algorithms that solves more complex problems. There are a large number of sorting algorithms, each with their own benefits and costs. Below, we will focus on some of the more famous sorting algorithms.
Where Algorithms are Used in Computer Science?Algorithms are used in every part of computer science. They form the field's backbone. In computer science, an algorithm gives the computer a specific set of instructions, which allows the computer to do everything, be it running a calculator or running a rocket. Computer programs are, at their core, algorithms written in programming languages that the computer can understand. Computer algorithms play a big role in how social media works: which posts show up, which ads are seen, and so on. These decisions are all made by algorithms. Google’s programmers use algorithms to optimize searches, predict what users are going to type, and more. In problem-solving, a big part of computer programming is knowing how to formulate an algorithm. Why are Algorithms Important to Understand?Algorithmic thinking, or the ability to define clear steps to solve a problem, is crucial in many different fields. Even if we’re not conscious of it, we use algorithms and algorithmic thinking all the time. Algorithmic thinking allows students to break down problems and conceptualize solutions in terms of discrete steps. Being able to understand and implement an algorithm requires students to practice structured thinking and reasoning abilities. This article originally appeared on junilearning.com Ananya Rao is studying Computer Science at Carnegie Mellon University in Pittsburgh, PA, and she is an instructor at Juni Learning. She is a biorobotics researcher at CMU, and she is pursuing an additional major in Robotics. She was previously a Digital Technology Intern at GE Transportation and an Assistant Teacher at the National Academy For Learning in Bengaluru, India. Ananya also enjoys dancing, building robots, and writing stories.
Coding Toys for Younger KidsFor kids 10 and under, there are many games and toys that help them understand the building blocks of computer programming. For example, Bitsbox delivers a physical box to your home every month containing a kit of projects, and then your young child can login to Bitsbox’s online platform to program their own version of these projects. The apps are selected based on difficulty and interests - they offer anything from interactive birthday cards to Tetris-like games. The apps can then be easily shared onto phones and tablets. The Osmo is an iPad-based programming game system that incorporates physical blocks to write code. Using a set of magnetic blocks, your child controls Awbie, a cute character who must navigate the different levels of the Osmo universe. The physical blocks must be connected together logically so that Awbie can move on screen, using commands like “move,” “turn,” and “repeat.” The Osmo is ideal for kids as young as five years old because they don’t need typing skills to learn the basics of programming logic and to practice their critical thinking skills. After your child has mastered Awbie, they can move onto Osmo’s other products like Coding Jam, which uses a similar block system to generate digital music, and Coding Duo, a more advanced version of Coding Awbie with multiple players. Cubetto is a completely screenless coding toy for kids 6 and under. Cubetto is a wooden robot that is programmed by placing colored blocks onto its surface, which instructs it where to move. The Cubetto is placed on top of different maps, mazes, and books. For example, in one challenge Cubetto must navigate around a big urban city. In another, he is in ancient Egypt, learning about pyramids, hieroglyphics, and the Sphinx. This is a great toy that encourages active play and critical thinking without any screens. Coding Games for Older KidsFor older kids who love robots, the Anki Cozmo is a palm-sized robot, built with facial recognition, self-maneuvering capabilities, and an “emotion engine” to respond to real-world situations. It comes with a Code Lab app for users to program the Cozmo’s movements and responses to different environments. Code Lab is built on Scratch, a visual programming language. For example, you can use Code Lab to program Cozmo to move around and write his name, or to approach a human and Cozmo recognizes his or her face. There is even a more extensive software development kit to tap into the Cozmo’s computer vision capabilities and third party integrations (like with Google Assistant and Android). Kids can also play games with Cozmo like Memory Match and Keepaway. If your child is interested in building hardware, the Kano might be the best toy for them. With the Kano, you follow a storybook to build a simple computer. The kit comes with a power supply, Raspberry Pi (the chip that powers the computer), keyboard, SD card, and optionally a microphone and an HD touchscreen. Once built, the touchscreen version allows you to program your own art, games and music. The coding starts with a block-based environment, but for more advanced students, there are projects available in Python and Javascript programming languages. Many kids this age love Minecraft, an open-ended game where users can build their own worlds and experiences using the resources they acquire. Building in Minecraft is very Lego-like, where the pieces are varied and fit together in infinite combinations. Given the nature of Minecraft, “modding” the game is extremely popular, where you create new items, resources, and functionality by programming extensions to Minecraft’s code. The most popular mods, for example, add new animals, crops, and furniture pieces to the game; allow you to monitor and control your inventory more efficiently; and even introduce magic and wand-making into the game. While modding Minecraft was not designed for beginning programmers, there are sites dedicated for helping kids learn how to mod with online tutorials like LearnToMod and books like Coding with Minecraft. Online Coding Games and PlatformsThere are also many online-based games and platform for students to start learning programming. CodeCombat offers a series of online levels in settings like the Kithgard Dungeon and the Backwoods Forest. Students gain points by completing challenges so that they can advance to the next level and buy power-ups. CodeMonkey is another online game where the student moves through a series of challenges in tracks like Coding Adventure and Coding Chatbots. The main language they focus on is CoffeeScript. For students who want to take a more rigorous course, Khan Academy offers self-paced courses in HTML, CSS, and Javascript, focusing on website and game development. These courses include online videos, written explanations, and coding exercises. This article originally appeared on junilearning.com
Article copyright © protected, all rights reserved. Reuse of this article or any of its content by permission only.
Andrea Domiter NOVEMBER 08, 2019 Python vs. Java: Uses, Performance, LearningIn the world of computer science, there are many programming languages, and no single language is superior to another. In other words, each language is best suited to solve certain problems, and in fact there is often no one best language to choose for a given programming project. For this reason, it is important for students who wish to develop software or to solve interesting problems through code to have strong computer science fundamentals that will apply across any programming language. Programming languages tend to share certain characteristics in how they function, for example in the way they deal with memory usage or how heavily they use objects. Students will start seeing these patterns as they are exposed to more languages. This article will focus primarily on Python versus Java, which are two of the most widely used programming languages in the world. While it is hard to measure exactly the rate at which each programming language is growing, these are two of the most popular programming languages used in industry today. One major difference between Python and Java is that Python is dynamically typed, while Java is statically typed. Loosely, this means that Java is much more strict about how variables are defined and used in code. As a result, Java tends to be more verbose in its syntax, which is one of the reasons we recommend learning Python before Java for beginners. For example, here is how you would create a variable named numbers that holds the numbers 0 through 9 in Python: numbers = [] for i in range(10): numbers.append(i) ArrayList numbers = new ArrayList(); for (int i = 0; i < 10; i++) { numbers.add(i); } Another major difference is that Java generally runs programs more quickly than Python, as it is a compiled language. This means that before a program is actually run, the compiler translates the Java code into machine-level code. By contrast, Python is an interpreted language, meaning there is no compile step. Usage and PracticalityHistorically, Java has been the more popular language in part due to its lengthy legacy. However, Python is rapidly gaining ground. According to Github’s State of the Octoberst Report, it has recently surpassed Java as the most widely used programming language. As per the 2018 developer survey, Python is now the fastest-growing computer programing language. Both Python and Java have large communities of developers to answer questions on websites like Stack Overflow. As you can see from Stack Overflow trends, Python surpassed Java in terms the percentage of questions asked about it on Stack Overflow in 2017. At the time of writing, about 13% of the questions on Stack Overflow are tagged with Python, while about 8% are tagged with Java! Web DevelopmentPython and Java can both be used for backend web development. Typically developers will use the Django and Flask frameworks for Python and Spring for Java. Python is known for its code readability, meaning Python code is clean, readable, and concise. Python also has a large, comprehensive set of modules, packages, and libraries that exist beyond its standard library, developed by the community of Python enthusiasts. Java has a similar ecosystem, although perhaps to a lesser extent. Mobile App DevelopmentIn terms of mobile app development, Java dominates the field, as it is the primary langauge used for building Android apps and games. Thanks to the aforementioned tailored libraries, developers have the option to write Android apps by leveraging robust frameworks and development tools built specifically for the operating system. Currently, Python is not used commonly for mobile development, although there are tools like Kivyand BeeWare that allow you to write code once and deploy apps across Windows, OS X, iOS, and Android. Machine Learning and Big DataConversely, in the world of machine learning and data science, Python is the most popular language. Python is often used for big data, scientific computing, and artificial intelligence (A.I.) projects. The vast majority of data scientists and machine learning programmers opt for Python over Java while working on projects that involve sentiment analysis. At the same time, it is important to note that many machine learning programmers may choose to use Java while they work on projects related to network security, cyber attack prevention, and fraud detection. Where to StartWhen it comes to learning the foundations of programming, many studies have concluded that it is easier to learn Python over Java, due to Python's simple and intuitive syntax, as seen in the earlier example. Java programs often have more boilerplate code - sections of code that have to be included in many places with little or no alteration - than Python. That being said, there are some notable advantages to Java, in particular its speed as a compiled language. Learning both Python and Java will give students exposure to two languages that lay their foundation on similar computer science concepts, yet differ in educational ways. Overall, it is clear that both Python and Java are powerful programming languages in practice, and it would be advisable for any aspiring software developer to learn both languages proficiently. Programmers should compare Python and Java based on the specific needs of each software development project, as opposed to simply learning the one language that they prefer. In short, neither language is superior to another, and programmers should aim to have both in their coding experience. This article originally appeared on junilearning.com
Article copyright © protected, all rights reserved. Reuse of this article or any of its content by permission only. Julia Geer October 19th, 2019 Is Coding a Fad?In short, no. Coding is a field that is growing and changing quickly; there is a world of opportunity for young students looking to get involved in the tech world. Opponents to this position might argue that today’s popular languages, like Python, won’t be used ten or fifteen years down the line. So what’s the use in learning these programming languages? While it is true that programming will continue to advance, it is important to remember that there is so much more to learning a coding language like Python than memorizing syntax and applications. When we teach coding, we teach concepts beyond one particular language. Students gain knowledge about how computers process and “think” about a given problem, regardless of which language they are learning. They gain important intuition about fundamental concepts, like basic control structures (e.g. loops and conditional statements) and algorithms, that will undoubtedly be useful in our highly technological future. Below are 8 of the many reasons why coding for kids is not just another trendy or silly fad. 1. Our world is growing more technologicalIn the 21st century, we have seen enormous developments in the technology industry. The world is moving in a direction that is both fast-paced and information-centered. Data is quickly becoming one of the most valuable resources in the global economy, and individuals with digital literacy are becoming more valued in the labor market. With all of this in mind, it’s hard to ignore the massive role that fields like data science and software engineering, both largely centered around coding, are going to have. Figures estimate seemingly outrageous numbers - an estimated fifty billion smart devices are projected to be in use by 2020 - illustrating the abundance of technology in our lives.With such statistics in our near futures, it is clear to see that industries are changing. The internet is a hub of information, applications, e-commerce, social networking, and communication platforms, all of which are designed to increase efficiency, performance, and convenience. As industries become digitized, new jobs are simultaneously emerging. Coding is an asset that will only continue to grow as we move forward as an increasingly connected society. 2. It teaches kids to strategize for unique solutionsComputer science is a highly useful tool beyond its direct applications. As there is rarely one right answer to a given problem, computer science encourages students to create solutions that are unique. For computer scientists, this means that coders have a great amount of leeway to create their own intuitive solutions. Teaching kids how to code pushes young students to actually learn, not just memorize facts and regurgitate them. It challenges students to critically think about a problem, what they want to accomplish, and how to get it done. There are plenty of kid-friendly coding languages, such as Scratch, that give young students the opportunity to build unique projects using coding techniques. Scratch also allows coders to share their projects with the world. This connectivity can inspire new and aspiring coders to learn from their peers and guide them through more complicated projects and concepts. This collaborative environment also allows students to work together and learn from one another. Encouraging kids to utilize these programs not only teaches them useful skills for computer science, but it also allows them to exercise their creativity. 3. It teaches students to not give upMost coders will advise, while there is plenty of room for creativity in coding, there is also plenty of room for error. Learning to code teaches students how not to give up on their solutions, but rather to debug their code, even when repeated error messages appear. Coders tease out solutions by using their understanding of computational thinking (see point 6) to isolate any errors and achieve the goal at hand. That code can always be improved upon motivates coding students to go back and better their solutions, an incredibly valuable skill set to have in general. Code also instills resilience, yet another invaluable tool in the workplace. While programming can feel tedious, frustrating, and difficult at times, the process of problem solving inherently makes for better coders and better students. 4. It can be applied to almost everything that students are learningComputer science is expanding into every corner of the world, with applications for anything one can imagine and automated services that are permeating thousands of business models worldwide. On top of that, programming incorporates many mathematical concepts, and it can complement the concepts students are learning in their math classes. Coding also promotes problem-solving, an important skill for any student. Beyond math, students can use code to support other interests they may have. With coding, young professionals’ career options extend across industries. By teaching kids how to code, students will find the confidence and tools to explore aspects of software engineering, data analysis, video game development, and mobile app development - in just about any industry that they know and love. 5. It is challenging and collaborativeCoding challenges young students to explore new fields. Computer science is a collaborative field, allowing individuals to work together to complement one another’s skill sets, and write code that is efficient and intuitive. Students can and often do learn to code in a group setting, so that they can discuss their ideas and learn from each other’s successes. Learning to code encourages students to work together when they reach a roadblock. It promotes collaboration via idea exchange and allows students’ to compare and contrast solutions. Teaching kids about computer programming can be a catalyst for inspiring teamwork and leadership among students. 6. It teaches students about computational thinkingWhichever languages a student decides to pursue - Python, Java, or any of the long list of popular coding languages today - will help them develop computational thinking. This means that students will learn how to effectively break down problems into manageable parts, observe patterns in data, identify how these patterns are generated, and develop the step-by-step instructions for solving those problems. Computational thinking and digital literacy are arguably the most important aspect to learning to code at any age due to the huge technological shift in nearly every industry on the global market (see point 1). Establishing a foundation in computational thinking will pave the way for future success in and outside CS related fields. All students can benefit from understanding computational thinking, as it applies to the technological aspects of daily life. 7. It’s good for the brainLike any good challenge, coding is an excellent way to strengthen young, developing brains. It encourages students to combine their knowledge of computational learning and out-of-the-box thinking to strategize unique solutions. Multiple studies support the hypothesis that learning to code has real, long term benefits on young children. Researchers have found that individuals who code tend to have reduced odds of getting neuro-degenerative diseases in older age. Coders also tend to do better in cognitive tasks, because coding activates areas of the brain that are associated with memory, attention, and logic. Learning to code at an early age supports neural connections in these regions, leading to high performance in other fields, as well. 8. It’s fun!While we may be slightly biased, computer science is an educational way to bring fun into your children’s lives! Computer science is one of the few fields of study in which students can see the immediate outcome of their work as they build out their projects - by running their code, they get instant, live feedback. Programs like Scratch and Repl.it utilize software that is kid-friendly and permits students to visualize their projects as they come to life! They can build code that creates a videogame or a website and share their work with friends. Developing kids’ proficiency with computer science now will lead to a future generation of coders who have the skill set to advance our world. This article originally appeared on junilearning.com on October 19th, 2019 Julia Geer is studying Cognitive Science at UC Berkeley and is a former instructor at Juni Learning. She has an interest in the applications of coding in data analytics and digital marketing. In her spare time, Julia loves finding new restaurants, going to the beach, and discovering new music.
Warm Welcome to this new content Publishing partnership |
The AuthorI dedicate my life to science, technology, music and to bringing people together. And I do it my way. Archives
November 2023
Categories
All
|