Description
Completing CS 131 will make you more productive, flexible, and creative (i.e., better) at programming, designing systems, and solving problems, because you will have a deep understanding of the material and tools that underlie all computer software.
Given a programming language, you will be able to
★ Identify the fundamental computational model(s) and design principle(s);
★ Break the language down into atomic features and types;
★ Evaluate the impact of language features on important software properties and human factors such as correctness, efficiency, extensibility, maintainability, modularity, scalability, security, and testability;
★ Explain how language features are implemented at the machine level; and
★ Apply all of the above to reason about the run-time behavior and costs of programs.
Consequently, you will
★ Use appropriate programming languages based on the problems to be solved and their contexts, and can logically justify your choices.
★ Write code that makes wise and effective use of the functionality provided by your chosen programming languages;
★ Enjoy learning new programming languages as needed, and do so with ease (efficiently, accurately, confidently, and independently)
and further, will
★ Treat code as data, and solve problems by using and writing programs that have code as input (e.g., interpreters and code analyzers), code as output (e.g., metaprograms and program generators), or both (e.g., compilers and transpilers).
Given a programming language, you will be able to
★ Identify the fundamental computational model(s) and design principle(s);
★ Break the language down into atomic features and types;
★ Evaluate the impact of language features on important software properties and human factors such as correctness, efficiency, extensibility, maintainability, modularity, scalability, security, and testability;
★ Explain how language features are implemented at the machine level; and
★ Apply all of the above to reason about the run-time behavior and costs of programs.
Consequently, you will
★ Use appropriate programming languages based on the problems to be solved and their contexts, and can logically justify your choices.
★ Write code that makes wise and effective use of the functionality provided by your chosen programming languages;
★ Enjoy learning new programming languages as needed, and do so with ease (efficiently, accurately, confidently, and independently)
and further, will
★ Treat code as data, and solve problems by using and writing programs that have code as input (e.g., interpreters and code analyzers), code as output (e.g., metaprograms and program generators), or both (e.g., compilers and transpilers).
General Information
Meeting times
Class (Section 1): MW 9:35-10:50pm, SHAN 2475
Class (Section 2): MW 11:00-12:15pm, SHAN 2475
Lab (Sections 1 & 2): M 4:15-5:15pm, SHAN 3481
Class (Section 2): MW 11:00-12:15pm, SHAN 2475
Lab (Sections 1 & 2): M 4:15-5:15pm, SHAN 3481
Class Wiki
Office Hours
Name | Office Hours | |
---|---|---|
Ben Wiedermann | When? Where? | |
Jonah Rubin | When? Where? | |
Sara McAllister | When? Where? | |
Coco Stiff | When? Where? | |
Katherine Gruenhagen | When? Where? | |
Mary Clare Shen | When? Where? | |
Melissa O'Neill | When? Where? | |
Thitaree Tanprasert | When? Where? | |
Maruhan Park | When? Where? |