• Contact Us Today!

    (925) 218-1816 or (510) 676-0415 | info@shengmengedu.com | 6691 Owens Dr, Pleasanton, CA 94588

  • Computer Programming and USACO

  • Shengmeng Education (SME) Center offers multiple year-round computer programming courses, in Java, Swift, and Python. SME also offers competition preparation labs for the yearly USACO computer programming contests, in Java.

    Why learn computer programming?
    For many centuries, the ability to read - “literacy” - was the hallmark of the cultured and sophisticated individual.  Today, almost everyone can read; but with the rise of computing, “computer literacy” is now expected to replace regular book literacy as the need-to-know skill.

    Almost everyone can use a computer to some extent, but the very highest honor and skill in computing is the ability to control computers, through the art of programming them.  Currently, only 3% of Americans can code. Indeed, as the world becomes more automated, especially with the rise of artificial intelligence, it is expected that those who know how to program computers will be some of the most privileged and respected members of society.  They will also see the fastest growth in their careers, and the highest salaries, something we are already beginning to see in Silicon Valley today. The tech industry is one of the biggest industries in the US. It employs almost seven (7) million people and is growing continuously at a rate of 3% per year while many other industries are declining. Over one million good-paying technology job openings are unfilled currently in the US because of no qualified applicants. 

    Shengmeng Education (SME) Center in Pleasanton is pleased to get your student ahead of the curve, offering year-round Java, Swift, and Python programming courses. Students will learn basic programming skills, advanced concepts in data structures, computing algorithms and software engineering, and gain the ability to solve complex problems. Meanwhile, for those participating in our USACO competition labs, students will train to compete and win in the United States of America Computing Olympiad (USACO).

    What is the best age to learn computer programming?
    Computer programming requires understanding of variables, equations and functions. Any student who completed Algebra 1 is ready to learn computer programming. Most students begin to develop these necessary abstract thinking abilities around an age of 12-13, roughly in the 7th grade.

    However, the Python programming language has a simple syntax. Its rich graphics, animation and visualization packages make Python easy and fun to learn, and we have had a great deal of luck teaching this language to younger students, as young as grades 5-6.

  • Should my student study Python or Java?
    In this era of information technology (IT) and artificial intelligence, it is well accepted that computer programming skills are rewarded with high salary and more job opportunities. Java has been and still is the No. 1 programming language in recent 20 years in IT industries. It is also the designated programming language for high school AP Computer Science course, and runs faster than Python, which is important in competitive programming. Python is the faster growing language in recent few years and it is best suited for big data, web development and artificial intelligence. Python is easy and fun to learn and becomes the first choice of introductory programming languages.

    A student should learn Python first at Grades 5-6 to develop passion for computer programming. At Grades 7-8, a student should pick up another programming language such as Java. In high school, students may take AP Computer Science course in Java. Students who found passion in computer science and problem solving should take SME Java courses to prepare them for USACO contests.


  • SME Java courses for USACO Contests

    Shengmeng Education (SME) Center offers competition labs to prepare students for UACO contests, which happen each year from roughly December through March (each year is a little different).  Competition programming is a skill, not a memorized curriculum - students compete at a particular level until they have gotten fast enough and sophisticated enough to proceed to the next level.

    Specifically, USACO is a computer programming and problem solving competition for middle school and high school students in the USA, though students from around the world also participate. USACO offers four to six competitions during an academic year at four increasingly difficult levels: Bronze, Silver, Gold and Platinum. Participants in USACO submit computer programs in one of five programming languages: C, C++, Java, Pascal, and Python. SME students will compete in Java for USACO. Participants advance through the levels by performing well in their current division; some students may even be promoted through multiple divisions all in the same contest. More information about the United States of America Computing Olympiad (USACO), and sample contest challenges from past years, can be found on its official website: http://www.usaco.org/

    The very best performers in the USACO contests are invited to an elite training camp each June, and of those attendees, just 4 high schoolers are chosen to represent the United States each year in the https://en.wikipedia.org/wiki/International_Olympiad_in_Informatics.  

    Online USACO Contests

    The USACO contests are an open-book online computer programming competition. Students complete the contest problems on their own computer at home. USACO holds periodic web-based contests during the academic year, and in the late spring conducts the US Open, the "national championship" exam. Contests generally run for three to five continuous hours in length, although for maximum flexibility, you are free to schedule this block of time anywhere within a Friday-to-Monday contest weekend --- your timer starts when you log into the contest and download the problems. You submit your final solutions through a simple web interface. Participation is free and open to all. Contests are offered in four divisions:

    • Bronze, for students who have recently learned to program, but who have no training in algorithms beyond basic concepts like sorting and binary search.
    • Silver, for students who are beginning to learn fundamental problem-solving techniques (e.g., recursive search, greedy algorithms) and fundamental data structures.
    • Gold, where students encounter more standard algorithms of a more complex nature (e.g., shortest paths, dynamic programming) and more advanced data structures.
    • Platinum, for advanced students who are well grounded in algorithmic problem-solving techniques, who wish to challenge themselves with sophisticated and more open-ended problems.

    All participants start in the bronze division, and those who score particularly well in a contest will be promoted to the next division. Contestants scoring particularly highly will be automatically promoted to the next division while a contest is still running, and they can take next-division contest during the same contest weekend. Others will need to wait until results are announced at the end of the contest to see if they meet the (contest-dependent) cutoff for promotion.

  • James Dowdell

    Mr. James Dowdell graduated from Harvard University in 2007 with a computer science degree. He is a seasoned software engineer (Java/Python/Scala/Javascript/C++) and has had a number of distinguished roles, including senior software engineer, data scientist, and manager, at several top technology companies including Microsoft, eBay, and Google. Recently he rediscovered his strong passion for teaching and hopes to transform Shengmeng Education Center into a launching pad for USACO rising stars and a center for training technical excellence. He looks forward to engaging new students who are eager to grow and excel in an environment where learning, questions, fun, participation, and some challenge, are all cultivated.