Download presentation
Presentation is loading. Please wait.
1
CS 3034: Widely Used Programming Languages
Lecture 1: Introduction to CS 3034 John Hurley Cal State LA 1 1 1
2
Introduction John Hurley Call me John, especially outside class.
If that’s too informal for you, you can call me “Instructor” Office hours listed at 2 2 2
3
CS 3034 CS 3034 introduces students to additional programming languages. It assumes the student is already proficient in OOP with Java This section will cover C++ and Python, with some material about C Course time will be split roughly evenly between lectures and labs. In each unit (C/C++ and Python) I will start out lecturing for a couple of class meetings, then increase the amount of lab time. 3 3 3
4
Course Information All information about the course is on CSNS
Course schedule and Software Download Links Textbook Info Grading policies Assignments 4 4 4
5
Textbook Goodrich, Tamassia, Mount, Data Structures and Algorithms in C++, Second Edition. International editions are available. They use shoddy bindings and paper, but are inexpensive. Be sure to get the Second Edition. 5 5 5
6
Don’t Post Solutions Online!
Don’t post partial or full solutions to the assignments anywhere on the internet! 6 6 6
7
Programming Languages
As you will learn in CS3120, all important programming languages are equivalent in an important sense. All the languages you are likely to learn are Turing-complete. They can all be used to implement solutions to the same set of problems that could be solved by a theoretical (not actual) machine defined by Alan Turing This does not mean that all Turing-complete languages are equally suitable for any particular task or that any particular algorithm can be implemented equally efficiently in any language 7 7
8
Programming Languages
Turing-complete programming languages vary in syntax and semantics. There are also important tradeoffs in different ways to translate from programming languages to machine code. Some languages are designed to support particular programming paradigms, which can have important effects on both efficiency of execution and programmer productivity (how much a programmer can accomplish in a given amount of time) Some languages are designed for special use cases (JavaScript) and others for narrow, not general, purposes (Matlab) 8 8
9
Programming Languages
Turing-complete programming languages vary in syntax and semantics. There are also important tradeoffs in different ways to translate from programming languages to machine code. Some languages are designed to support particular programming paradigms, which can have important effects on both efficiency of execution and programmer productivity (how much a programmer can accomplish in a given amount of time) Some languages are designed for special use cases (JavaScript) and others for narrow, not general, purposes (Matlab) C, C++ and Python are general-purpose languages, although in practice they are useful for different types of problems. 9 9
10
C/C++ and Python Units The main objective of this course is to teach you additional programming languages. However, there are some other compatible objectives: C is widely used in systems programming. The brief introduction to C should be helpful if you take CS 4440. Software employers often use technical questions in job interviews. The questions are usually CS 203-level questions about data structures and associated algorithms. The C++ unit in this course will focus on lower-level implementation of some important data structures. As you will see, this is also a very good way to learn the unique characteristics of C++ itself. Python offers easy ways to accomplish many high-level programming tasks. The Python unit will lead up to building a website using Django, a web programming fraework. 10 10
11
Virtual Machines You are already familiar with the Java Virtual Machine, which takes Java bytecode as its assembly language and interprets it at runtime. Virtual machines in general use resources (CPU time, memory) supplied by a host OS. At higher levels, it appears as though those resources were the lower-level components of a physical machine. VMs are used for many purposes separate software from the host system for security purposes; intrusions or malware can be isolated within the VM abstract away platform specifics so developers don’t have to think about them, as with the JVM, Python, and .NET provide a uniform environment for multiple developers who are actually using different OSs and hardware 11 11
12
Virtual Machine First widely used in VM/370 with CMS
App1 App2 App3 System calls Linux Windows NT FreeBSD I/O instructions VMware VMware VMware Calls to simulate I/O Linux “Real” I/O instructions Bare hardware First widely used in VM/370 with CMS Available today in VMware Allows users to run any x86-based OS on top of Linux or NT “Guest” OS can crash without harming underlying OS Only virtual machine fails—rest of underlying OS is fine “Guest” OS can even use raw hardware Virtual machine keeps things separated Ahmed Amer, Ethan L. Miller and Scott A. Brandt, University of Pittsburgh 12
13
Digital Ocean VM Since C++ is not fully standardized, you need to use the same OS and compiler I use for grading your work. In the Python unit, we will deploy a website. This course requires you to use a VM on a Digital Ocean ( account. Use the $10/month level. Github offers a student package that may save you money. I have not tried it. When you set up the account, you set up a "droplet" and choose an operating system for it. Choose Fedora 26. If you have another way to run Fedora 26, you can wait until the Python unit (when you will set up a public web server) to get the VM. For example, you could run Fedora 26 in VirtualBox up until about week 12. Otherwise, set up the Digital Ocean account now. 13
14
SSH and SFTP Clients To work with the Digital Ocean VM from Windows machines, you will need a Secure Shell client and an SFTP client. Linux and Mac OSX systems already have SSH and SFTP clients built in. If you use Windows and like particular SSH and SFTP clients that you have already used, use them. Otherwise, try PUTTY and PSFTP or SSH Secure Shell and SSH Secure FTP. These are available on the lab computers and are easy to install at home or on a USB drive. You can easily find instructions for using these tools online. They are not hard to learn. 14 14
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.