01-intro - Course Goal CMSC 330: Organization of...

Info iconThis preview shows pages 1–3. Sign up to view the full content.

View Full Document Right Arrow Icon
1 CMSC 330: Organization of Programming Languages Introduction CMSC 330 2 Course Goal Learn how programming languages “work” Broaden your language horizons • Different programming languages • Different language features and tradeoffs Study how languages are implemented • What really happens when I write x.foo(…) ? Study how languages are described / specified • Mathematical formalisms CMSC 330 3 Course Subgoals Learn some fundamental CS concepts • Regular expressions • Context free grammars • Automata theory Improve programming skills • Learn how to learn new programming languages • Learn how to program in a new programming style CMSC 330 4 Calendar / Course Overview Tests • 4-5 Quizzes, 2 midterms, final exam Projects • Project 1, 2 – Ruby • Project 3, 4 – OCaml • Project 5 – Multithreading Programming languages • Ruby • OCaml • Java CMSC 330 5 Rules and Reminders Use lecture notes as your text • To be supplemented by readings, internet Keep ahead of your work • Get help as soon as you need it h Office hours, CS forum, email Don’t disturb other students in class • Keep cell phones quiet • Use laptops only for school work CMSC 330 6 Academic Integrity All written work (including projects) must be done on your own • Do not copy code from other students • Do not copy code from the web Work together on high-level project questions • Do not look at/describe another student’s code • If unsure, ask instructor! • Software used to find suspicious code similarities h Very effective Can work together on practice questions
Background image of page 1

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
2 CMSC 330 7 Syllabus Scripting languages (Ruby) Regular expressions and finite automata Context-free grammars Functional programming (OCaml) Concurrency Object-oriented programming (Java) Environments, scoping, and binding Advanced topics CMSC 330 8 All Languages Are Equivalent A language is Turing complete if it can compute any function computable by a Turing Machine Essentially all general-purpose programming languages are Turing complete • I.e., any program can be written in any programming language Therefore this course is useless?! • Learn only 1 programming language, always use it CMSC 330 9 Why Study Programming Languages? To allow you to choose between languages • Using the right programming language for a problem may make programming h Easier, faster, less error-prone • Programming is a human activity h Features of a language make it easier or harder to program for a specific application CMSC 330 10 Why Study Programming Languages? To make you better at learning new languages
Background image of page 2
Image of page 3
This is the end of the preview. Sign up to access the rest of the document.

Page1 / 7

01-intro - Course Goal CMSC 330: Organization of...

This preview shows document pages 1 - 3. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online