CM114C Programming for Problem Solving