Courses in Summer II 2016
You need to be also registered for the CRN 31906 lab.
Prerequisite (may be taken concurently): MATH 1180 or MATH 1220 or MATH 2000 or MATH 1700 or MATH 1230 or MATH 1710 or MATH 2720 or MATH 3740.
This course is aimed at college freshmen and other students seeking a basic knowledge of computer programming. As a freshman level course it has two goals: 1) to develop basic knowledge, skills, and attitudes relating to student of computing and computer science, and 2) to develop basic knowledge, skills, and attitudes for general college level academic, college life and beyond.
The course is very structured, as is appropriate for freshmen. Like most college courses, this course requires students to take responsibility for their own learning. The course follows a strict schedule of reading, writing, and quizzes. Each week reading will cover one or two chapters of the textbook. The reading, writing, and examination schedule is firm. Students are required to develop the discipline to follow the schedule.
As is typical of many college courses, this course will require midterm examinations during the course and a comprehensive final examination.
Classroom activities, unlike the readings and quizzes, are somewhat less structured. This allows for tangents in discussions, the use of occasional visiting guests, unforeseen instructor absences, holidays, etc. The flexibility of the classroom does not tie students or instructor to the textbook readings, but does complement and enhance those readings. Students are responsible for material in the textbook, whether or not the material is addressed in the classroom. Students are also responsible for material and skills presented or discussed in class.
Big Java Early Objects 6e, by Cay S. Horstmann, Interactive Edition, Wiley E-book, ISBN-978-1-119-14159-4, Wiley, December 2015.
Course Outcomes
consistently follow a problem solving process;
Understand, design, implement, and test
read, develop, and implement algorithms to solve simple problems;
Define, recognize, design, and implement algorithms (pseudocode)
understand and use basic concepts of high-level language procedural programming;
Main program, Declarations, Assignment-statements, I/O-statements, Selection-statements, Loop-statements, Method Call-statements, Statements vs. Expressions
understand and use basic concepts of OOP;
consistently document programs effectively and efficiently;
Program Identification, Sectional Comments, Side-by-Side Comments, Redundant vs. Non -redundant Comments, Use of white-space and indentation, Use of readable identifiers
understand and use basic components of an integrated development environment (IDE);
Context-sensitive Editor, Build/Compile, Execute, Symbolic Debugger
know the basic phases of the software life cycle and software development cycle;
Concept, Development, Maintenance, Retirement
Requirements, Design, Code & Debug, Test
know basic searching algorithms;
Linear and binary search;
Selection and insertion sort;
gain an initial and elementary understanding of algorithm complexity;
Big O Notation
Courses in Spring 2016
CS1110 - S16
You need to be also registered for one of the labs from CRNs 11367, 11369, 11375 or 11377
Prerequisite (may be taken concurently): MATH 1180 or MATH 1220 or MATH 2000 or MATH 1700 or MATH 1230 or MATH 1710 or MATH 2720 or MATH 3740.
This course is aimed at college freshmen and other students seeking a basic knowledge of computer programming. As a freshman level course it has two goals: 1) to develop basic knowledge, skills, and attitudes relating to student of computing and computer science, and 2) to develop basic knowledge, skills, and attitudes for general college level academic, college life and beyond.
The course is very structured, as is appropriate for freshmen. Like most college courses, this course requires students to take responsibility for their own learning. The course follows a strict schedule of reading, writing, and quizzes. Each week reading will cover one or two chapters of the textbook. The reading, writing, and examination schedule is firm. Students are required to develop the discipline to follow the schedule.
As is typical of many college courses, this course will require two midterm examinations during the course and a comprehensive final examination.
Classroom activities, unlike the readings and quizzes, are somewhat less structured. This allows for tangents in discussions, the use of occasional visiting guests, unforeseen instructor absences, holidays, etc. The flexibility of the classroom does not tie students or instructor to the textbook readings, but does complement and enhance those readings. Students are responsible for material in the textbook, whether or not the material is addressed in the classroom. Students are also responsible for material and skills presented or discussed in class.
Required Texts
Starting Out with Java – From Control Structures through Objects **CS 1110 Textbook**, by Tony Gaddis, Pearson Custom – Computer Science, (2013) ISBN-10: 1269046780, ISBN-13: 9781269046787, Pearson Learning Solutions, Boston, MA.
Pearson MyProgrammingLab is bundled with the custom book at the WMU bookstore. If you have purchased the full book or a used custom book, you may have to purchase the access code for MyProgrammingLab separately.
consistently follow a problem solving process;
Understand, design, implement, and test
read, develop, and implement algorithms to solve simple problems;
Define, recognize, design, and implement algorithms (pseudocode)
understand and use basic concepts of high-level language procedural programming;
Main program, Declarations, Assignment-statements, I/O-statements, Selection-statements, Loop-statements, Method Call-statements, Statements vs. Expressions
understand and use basic concepts of OOP;
consistently document programs effectively and efficiently;
Program Identification, Sectional Comments, Side-by-Side Comments, Redundant vs. Non -redundant Comments, Use of white-space and indentation, Use of readable identifiers
understand and use basic components of an integrated development environment (IDE);
Context-sensitive Editor, Build/Compile, Execute, Symbolic Debugger
know the basic phases of the software life cycle and software development cycle;
Concept, Development, Maintenance, Retirement
Requirements, Design, Code & Debug, Test
know basic searching algorithms;
Linear and binary search;
Selection and insertion sort;
gain an initial and elementary understanding of algorithm complexity;
Big O Notation
CS6320 - S16
Prerequisites:
Solid undergraduate background in Design and Analysis of Algorithms and/or consent of the instructor.
By Courses: CS 5260 and (CS 4310 or CS 5310). A grade of “C” for undergraduates and “B” for graduates needed in prerequisite courses.
By Topic: Advance understanding of high-level language programming - conditional structures; looping structures; arrays; program logic - to solve problems; object oriented programming - be able to create and use objects; sorting and searching algorithms; data structures (linked lists, queues, stacks, hash maps); divide-and-conquer, greedy, dynamic programming, branch-and-bound and backtracking algorithm design techniques; documenting programs effectively and efficiently; team work. Proficient in Java, C, C++, or C# beyond the experience in CS3310. Low-level, systems programming and Linux programming experience desired. Undergraduate level mathematics and statistics background. Strong desire, self-motivation & dedication to learn and contribute to the interesting areas of computer science.
This 3 credit hour graduate-level course builds on the foundations of design and analysis of algorithms. A primary objective is to develop the advanced skills necessary for designing efficient sequential and parallel algorithms. It is intended for graduate students who plan to pursue research and/or interested in designing efficient solutions to computationally hard and even not-so-hard problems. One will develop an understanding of how to indentify problems that are computationally hard; how to design reasonably efficient tractable algorithms by using approximation and heuristic approaches. Similar ideas may also be applied to designing faster and scalable solutions for otherwise tractable problems.
Approximately two-thirds of this course will be devoted to approximation and heuristic algorithms, and the remaining to NP-completeness, reducibility and related concepts.
Catalog Description:
The course covers the theory of NP-completeness and techniques that help to apply the theory to practical problems. The model of non-deterministic Turing machines is used to classify various problems as NP (Non-deterministic Polynomial), Polynomial, NP-Complete, NP-Hard, and Pseudo-Polynomial. Problems for various computer science areas, such as scheduling, routing, compiler optimization, chip packaging, graph embedding, are used to illustrate the concepts and techniques. Effective approximation algorithms are designed and analyzed to deal with various NP-complete problems.
Required Texts
Computers and Intractability - A Guide to the Theory of NP-Completeness by M. Garey and D. Johnson, W. H. Freeman and Co. 1979, pp. x+338.ISBN 0-7167-1045-5
The Design of Approximation Algorithms by D.Williamson and D. Shmoy, Cambridge University Press, 2011,pp. x+518. ISBN 978-052119527.
WMU bookstore link to purchase the books.
We will also extensively refer to research papers and material available on the web.
Aho A., Hopcroft J. and Ullman J., "The Design and Analysis of Computer Algorithms", Addison-Wesley. (1976).
Aho A., Hopcroft J. and Ullman J., "Data Structures and Algorithms", Addison-Wesley. (1983).
Corman, T., Leiserson, C. E., and Rivest, R. L., "Introduction to Algorithms," McGraw Hill, 1990.
Gonzalez, T.F., (editor), "Approximation Algorithms and Metaheuristics," Chapman-Hill/CRC Press, 2007,
Harel, D., "Algorithmics," Addison-Wesley Publishing Co., 1987.
Hochbaum, D., "Approximation algorithms for NP-hard problems," PWS Pub. Co., 1997.
Horowitz, E., Sahni, S. , and Rajasekaran, S., "Computer Algorithms in C++," Computer Science Press, (1997).
Knuth, D. E., "Fundamental Algorithms: The Art of Computer Programming," Addison-Wesley, Menlo Park, CA (1973).
Knuth, D. E., "Sorting and Searching: The Art of Computer Programming," Addison-Wesley, Menlo Park, CA (1973).
Motwani, R., and Raghavan, P., "Randomized algorithms," Cambridge University Press, 1995.
Sedgewick, R. "Algorithms," Addison-Wesley 1983.
Tarjan, R. E., "Data Structures and Network Algorithms," Society of Industrial and Applied Mathematics, 1983.
Vazirani, V.V., "Approximation algorithms," Springer-Verlag, 2001.
Course Learning Outcomes
Students will be able to analyze computational poblems and their algorithms.
Students will know how to obtain improved solutions.
Students will be able to distingusish between computationally tractable and intractable problems.
Students will be able to design approximation algorithms and heuristic solutions.
Students' progress and achievements towards reaching the course goals and objectives will be apparent from such measures as: the results and creativity displayed in course assignments; and the contents of and performance on certain exam portions.
Courses in Summer II 2017
Prerequisites:
By Courses: CS3310 or equivalent with a grade of C or better; or permission of the instructor.
By Topic: Advance understanding of high-level language programming - conditional structures; looping structures; arrays; program logic - to solve problems; object oriented programming - be able to create and use objects; software life cycle; validating quality of software produced; sorting and searching algorithms; data structures (linked lists, queues, stacks, hash maps); divide-and-conquer, greedy, dynamic programming, branch-and-bound and backtracking algorithm design techniques; documenting programs effectively and efficiently; team work. Proficient in Java, C, C++, or C# beyond the experience in CS3310. Low-level, systems programming and Linux programming experience desired. Some mathematics and statistics background. Strong desire, self-motivation & dedication to learn and contribute to the interesting area of cloud-computing.
This course is a 3 credit hour advance undergraduate or introductory graduate level topics course, intended for students who plan to design and develop applications, or pursue research in the exciting area of cloud computing. Cloud computing comes into focus only when you think about what IT always needs: a way to increase capacity or add capabilities on the fly without investing in new infrastructure, training new personnel, or licensing new software. The primary objective is to provide the introduction to the current practices of cloud computing, often also known as the Internet as a platform. Mainly focusing on cloud computing models, techniques, and architectures, this course will provide students with the knowledge and hand-on experience in designing and implementing cloud-based software systems. Topics may include advanced web technologies (e.g. AJAX and Mashup), distributed computing models and technologies (Hadoop and MapReduce), Infrastructure-as-a-Service (IaaS), Software as a Service (SaaS), Platform-as-a-Service (PaaS), virtualization, parallelization, security/privacy, and other issues in cloud computing. This course will also explore the current challenges facing cloud computing. Approximately two-thirds of this course will be devoted to learning applications programming for various cloud infrastructures and the rest to development/understanding of systems issues in installing and implementing clouds and related systesm on different platforms.
AWS Certified Solutions Architect, by Joe Baron, Hisham Baz, Tim Bixter, et. al., 2016, John Wiley & Sons Inc., ISBN 9781119138556.
We will also extensively refer to research papers, material available on the web and material from the following recommended textbooks.
Cloud Computing for Machine Learning and Cognitive Applications by Kai Hwang, 2017, The MIT Press, ISBN 9780262036412
Hadoop: The Definitive Guide, Third Edition, by Tom White (O'Reilly)
Data-Intensive Text Processing with MapReduce, by Jimmy Lin and Chris Dyer
Mastering Cloud Computing by Buyya, Vecchiola & Selvi, 2013, Morgan Kaufmann Publishers, ISBN 9780124114548
Students will be able to describe principles behind cloud-computing.
Students will be able to write simple application programs using a public or private cloud infrastructure.
Students will be able to install cloud software and run a cloud.
Students will be able to write simple programs using MapReduce.
Students will be familiar in using Hadoop (HDFS).
Students' progress and achievements towards reaching the course goals and objectives will be apparent from such measures as: the results and creativity displayed in course assignments; and the contents of and performance on certain exam portions.
Courses in Summer II 2018
CS4430/CS5430 - SU18
Prerequisites:
By Courses: CS3310 or equivalent with a grade of C or better; or permission of the instructor.
By Topic: Advance understanding of high-level language programming - conditional structures; looping structures; arrays; program logic - to solve problems; object oriented programming - be able to create and use objects; software life cycle; validating quality of software produced; sorting and searching algorithms; data structures (linked lists, queues, stacks, hash maps); divide-and-conquer, greedy, dynamic programming, branch-and-bound and backtracking algorithm design techniques; documenting programs effectively and efficiently; team work. Proficient in Java, C, C++, or C# beyond the experience in CS3310. Low-level, systems programming, and Linux programming experience desired. Some mathematics and statistics background.
Note: A student may not receive credit for both CS 4430 and CS 5430.
This course is a 3 credit hour advance undergraduate or introductory graduate level course on database systems, intended for students who plan to design and develop relational database applications, or get introduced to the area of databases for research.
The general objective of this first course in DBMS is to introduce students basic concepts, techniques and systems for data management so that students are able to design their own databases, write database queries, and develop database applications. Specific objectives include:
Understand basic concepts in databases and DBMSs
Understand the relational theory.
Develop skills needed to design relational databases.
Develop skills to write database queries.
Get experience of database programming and application development.
Upon completion of this course, students will be able to:
explain basic concepts in databases and benefits of databases to organizations,
explain relational model and query relations using algebraic expressions,
create database schema and query database using SQL,
write database programs and develop Internet applications,
design database schema using the Entity-Relationship model,
transform database schema into normalized designs.
Jeffrey D. Ullman and Jennifer Widom. A First Course in Database Systems. 3rd Edition. Prentice Hall, 2007. ISBN: 978-0136006374 (or Chapters 1-12, Database Systems: The Complete Book. 2nd Edition. ISBN: 978-0131873254) . The authors maintain a book web site at http://infolab.stanford.edu/~ullman/fcdb.html where you can find a lot of useful stuff.
Students' progress and achievements towards reaching the course goals and objectives will be apparent from such measures as: the results and creativity displayed in course assignments; and the contents of and performance on certain exam portions.
CS5950/CS6030 - Cloud, IoT and Big Data Analytics
Prerequisites:
By Courses: CS3310 or equivalent with a grade of C or better; or permission of the instructor.
By Topic: Advance understanding of high-level language programming - conditional structures; looping structures; arrays; program logic - to solve problems; object oriented programming - be able to create and use objects; software life cycle; validating quality of software produced; sorting and searching algorithms; data structures (linked lists, queues, stacks, hash maps); divide-and-conquer, greedy, dynamic programming, branch-and-bound and backtracking algorithm design techniques; documenting programs effectively and efficiently; team work. Proficient in Java, C, C++, or C# beyond the experience in CS3310. Low-level, systems programming, and Linux programming experience desired. Some mathematics and statistics background. Exposure to machine-learning, Python & R programming are a plus. Strong desire, self-motivation & dedication to learn and contribute to the interesting area of cloud-computing (mainly cloud services, cloud based ML and data analytics).
This course is a 3 credit hour advance undergraduate or introductory graduate level topics course, intended for students who plan to design and develop applications, or pursue research in the exciting area of cloud computing. Cloud computing comes into focus only when you think about what IT always needs: a way to increase capacity or add capabilities on the fly without investing in new infrastructure, training new personnel, or licensing new software. The primary objective is to provide the introduction to the current practices of cloud computing, often also known as the Internet as a platform. Mainly focusing on cloud computing models, techniques, architectures and data analytics using cloud based services, this course will provide students with the knowledge and hand-on experience in designing and implementing cloud-based software systems. Topics may include advanced web technologies (e.g. AJAX and Mashup), distributed computing models and technologies (Hadoop and MapReduce), Infrastructure-as-a-Service (IaaS), Software as a Service (SaaS), Platform-as-a-Service (PaaS), ML as a service (MaaS), virtualization, parallelization, security/privacy, and other issues in cloud computing. This course will also explore the current challenges facing cloud computing. Approximately three-fourths of this course will be devoted to learning applications programming using cloud infrastructures and the rest to development/understanding of systems issues in installing and implementing clouds and related systesm on different platforms.
Required Texts
Big-Data Analytics for Cloud, IoT & Cognitive Learning by Kai Hwang and Min Chen, 2017, John Wiley & Sons Inc, ISBN: 9781119247029
We will also extensively refer to research papers, material available on the web and material from the following recommended textbooks.
AWS Certified Solutions Architect, by Joe Baron, Hisham Baz, Tim Bixter, et. al., 2016, John Wiley & Sons Inc., ISBN 9781119138556.
Cloud Computing for Machine Learning and Cognitive Applications by Kai Hwang, 2017, The MIT Press, ISBN 9780262036412
Hadoop: The Definitive Guide, Third Edition, by Tom White (O'Reilly)
Data-Intensive Text Processing with MapReduce, by Jimmy Lin and Chris Dyer
Mastering Cloud Computing by Buyya, Vecchiola & Selvi, 2013, Morgan Kaufmann Publishers, ISBN 9780124114548
Course Learning Outcomes
Students will be able to describe principles behind cloud-computing.
Students will be able to write simple application programs using a public or private cloud infrastructure.
Students will be able to explore the creation of massively parallel scalable application systems using As-A-Service framework.
Students will be familiar with MapReduce and Hadoop (HDFS).
Advance students will be able to install cloud software and run a cloud.
Students' progress and achievements towards reaching the course goals and objectives will be apparent from such measures as: the results and creativity displayed in course assignments; and the contents of and performance on certain exam portions.
Courses in Fall 2019
CS5950/CS6030 - F19
Prerequisites:
By Courses: CS3310 or equivalent with a grade of C or better; or permission of the instructor.
By Topic: Advance understanding of high-level language programming - conditional structures; looping structures; arrays; program logic - to solve problems; object oriented programming - be able to create and use objects; software life cycle; validating quality of software produced; sorting and searching algorithms; data structures (linked lists, queues, stacks, hash maps); divide-and-conquer, greedy, dynamic programming, branch-and-bound and backtracking algorithm design techniques; documenting programs effectively and efficiently; team work. Proficient in Java, C, C++, or C# beyond the experience in CS3310. Low-level, systems programming, and Linux programming experience desired. Some mathematics and statistics background. Exposure to machine-learning, Python & R programming are a plus. Strong desire, self-motivation & dedication to learn and contribute to the interesting area of cloud-computing (mainly cloud services, cloud based ML and data analytics).
This course is a 3 credit hour advance undergraduate or introductory graduate level topics course, intended for students who plan to design and develop applications, or pursue research in the exciting area of cloud computing. Cloud computing comes into focus only when you think about what IT always needs: a way to increase capacity or add capabilities on the fly without investing in new infrastructure, training new personnel, or licensing new software. The primary objective is to provide the introduction to the current practices of cloud computing, often also known as the Internet as a platform. Mainly focusing on cloud computing models, techniques, architectures and data analytics using cloud based services, this course will provide students with the knowledge and hand-on experience in designing and implementing cloud-based software systems. Topics may include advanced web technologies (e.g. AJAX and Mashup), distributed computing models and technologies (Hadoop and MapReduce), Infrastructure-as-a-Service (IaaS), Software as a Service (SaaS), Platform-as-a-Service (PaaS), ML as a service (MaaS), virtualization, parallelization, security/privacy, and other issues in cloud computing. This course will also explore the current challenges facing cloud computing. Approximately three-fourths of this course will be devoted to learning applications programming using cloud infrastructures and the rest to development/understanding of systems issues in installing and implementing clouds and related systesm on different platforms.
Big-Data Analytics for Cloud, IoT & Cognitive Learning by Kai Hwang and Min Chen, 2017, John Wiley & Sons Inc, ISBN: 9781119247029
AWS Certified Solutions Architect, by Joe Baron, Hisham Baz, Tim Bixter, et. al., 2016, John Wiley & Sons Inc., ISBN 9781119138556.
We will also extensively refer to research papers, material available on the web and material from the following recommended textbooks.
Cloud Computing for Machine Learning and Cognitive Applications by Kai Hwang, 2017, The MIT Press, ISBN 9780262036412
Hadoop: The Definitive Guide, Third Edition, by Tom White (O'Reilly)
Data-Intensive Text Processing with MapReduce, by Jimmy Lin and Chris Dyer
Mastering Cloud Computing by Buyya, Vecchiola & Selvi, 2013, Morgan Kaufmann Publishers, ISBN 9780124114548
Students will be able to describe principles behind cloud-computing.
Students will be able to write simple application programs using a public or private cloud infrastructure.
Students will be able to explore the creation of massively parallel scalable application systems using As-A-Service framework.
Students will be familiar with MapReduce and Hadoop (HDFS).
Advance students will be able to install cloud software and run a cloud.
Students' progress and achievements towards reaching the course goals and objectives will be apparent from such measures as: the results and creativity displayed in course assignments; and the contents of and performance on certain exam portions.
Courses in Summer II 2019
Prerequisites:
By Courses: CS3310 or equivalent with a grade of C or better; or permission of the instructor.
By Topic: Advance understanding of high-level language programming - conditional structures; looping structures; arrays; program logic - to solve problems; object oriented programming - be able to create and use objects; software life cycle; validating quality of software produced; sorting and searching algorithms; data structures (linked lists, queues, stacks, hash maps); divide-and-conquer, greedy, dynamic programming, branch-and-bound and backtracking algorithm design techniques; documenting programs effectively and efficiently; team work. Proficient in Java, C, C++, or C# beyond the experience in CS3310. Low-level, systems programming, and Linux programming experience desired. Some mathematics and statistics background.
Note: A student may not receive credit for both CS 4430 and CS 5430.
This course is a 3 credit hour advance undergraduate or introductory graduate level course on database systems, intended for students who plan to design and develop relational database applications, or get introduced to the area of databases for research.
Objectives:
The general objective of this first course in DBMS is to introduce students basic concepts, techniques and systems for data management so that students are able to design their own databases, write database queries, and develop database applications. Specific objectives include:
Understand basic concepts in databases and DBMSs
Understand the relational theory.
Develop skills needed to design relational databases.
Develop skills to write database queries.
Get experience of database programming and application development.
Upon completion of this course, students will be able to:
explain basic concepts in databases and benefits of databases to organizations,
explain relational model and query relations using algebraic expressions,
create database schema and query database using SQL,
write database programs and develop Internet applications,
design database schema using the Entity-Relationship model,
transform database schema into normalized designs.
Jeffrey D. Ullman and Jennifer Widom. A First Course in Database Systems. 3rd Edition. Prentice Hall, 2007. ISBN: 978-0136006374 (or Chapters 1-12, Database Systems: The Complete Book. 2nd Edition. ISBN: 978-0131873254) . The authors maintain a book web site at http://infolab.stanford.edu/~ullman/fcdb.html where you can find a lot of useful stuff.
Students' progress and achievements towards reaching the course goals and objectives will be apparent from such measures as: the results and creativity displayed in course assignments; and the contents of and performance on certain exam portions.
Courses in Fall 2020
CS4310-5310 - F20
This course can satisfy one of the foundation courses required for computer science masters degree for the WMU-CS undergraduate students continuing their graduate studies. Check the details of foundation courses at
https://wmich.edu/cs/academics/graduate/ms-program
Prerequisites:
By Courses: (MATH 1450 or CS1310) and CS3310 or equivalent with a grade of C or better; or permission of the instructor.
By Topic: Advance understanding of high-level language programming - conditional structures; looping structures; arrays; program logic - to solve problems; object oriented programming - be able to create and use objects; software life cycle; validating quality of software produced; introductory sorting and searching algorithms; elementary data structures (linked lists, queues, stacks, hash maps); documenting programs effectively and efficiently; team work.
This is an exciting but challenging course basic, fundamental and foundational to computer science. This course is a continuation of the study of data structures and algorithms, emphasizing methods useful in practice. It provides a theoretical foundation in designing algorithms as well as their efficient implementations. The focus is on the advanced analysis of algorithms and on how the selections of different data structures affect the performance of algorithms. Topics covered include: sorting; search trees, heaps, and hashing; divide-and-conquer; dynamic programming; backtracking; branch-and-bound; amortized analysis; graph algorithms; shortest paths; network flow; computational geometry; number-theoretic algorithms; polynomial and matrix calculations; and parallel computing.
The course is appropriate for seniors and beginning graduate students. Like most college courses, this course requires students to take responsibility for their own learning. The course follows a strict schedule of reading, writing, and quizzes. Each week reading will cover one or two chapters of the textbook. The reading, writing, and examination schedule is firm. Students are required to develop the discipline to follow the schedule.
As is typical of many college courses, this course will require two midterm examinations during the course and a number of quizzes.
Classroom activities, unlike the readings and quizzes, are somewhat less structured. This allows for tangents in discussions, the use of occasional visiting guests, unforeseen instructor absences, holidays, etc. The flexibility of the classroom does not tie students or instructor to the textbook readings, but does complement and enhance those readings. Students are responsible for material in the textbook, whether or not the material is addressed in the classroom. Students are also responsible for material and skills mentoned, presented or discussed in class.
Algorithm Design and Applications by Michael Goodrich and Roberto Tamassia, Oct 2014, Wiley, ISBN - 978-1-118-33591-8.
We will also be using Shaffer's Data Structures and Algorithms book - the link is to an older version, we will provide you an online interactive latest version on Canvas
Notes - Summation and Recurrence Relations.
A number of textbooks (in addition to GT's book) on algorithm design appropriate for this course have been published. The course will cover material from these books as well as material from research papers.
The book "Algorithms (4th Edition) by Robert Sedgewick and Kevin Wayne, Addison-Wesley Professional, ISBN-10: 032157351X, ISBN-13: 978-0321573513" used in previous semesters may suffice for you, if you can copy problems sets needed in homeworks from one of your colleagues who has purchased the required texbook.
The book "Algorithm Design: Foundations, Analysis and Internet Examples by Michael Goodrich and Roberto Tammassia, Wiley, ISBN: 978-0-471-38365-9" may also suffice, if you can copy problems sets needed in homeworks from one of your colleagues who has purchased the required texbook.
Introduction to Algorithms (3rd ed.) by Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L.; Stein, Clifford (2009) [1990]. MIT Press and McGraw-Hill. ISBN 0-262-03384-4 is a good reference book to have. Read about it in its wiki page
Reinforce analytic development and problem solving abilities, and develop a deeper foundation in computer science.
Show progress with regard to understanding the analysis and performance of algorithms (for further use, e.g., in graduate level courses), including knowledge and use of terminology and how the theory connects with real-world applications, possibly in different and new areas.
Apply the concepts covered in the course to written and practical problems, e.g., by combining problem solving with computer programming and the use of software tools as part of assignments.
Students who earn a “C” or better in this course should have knowledge of
Sequential algorithms pertaining to the greedy, divide-and-conquer, dynamic programming, backtracking and branch-and-bound paradigms;
Parallel algorithms pertaining to SIMD, MIMD, shared memory and message passing systems;
Introductory databases and data management applications;
Analyzing iterative and recursive sequential and parallel algorithms;
Efficient data structures such as AVL trees, 2-3 trees, min-max heaps, B-trees.
Prerequisites:
By Courses: CS3100 or CS3310 or equivalent with a grade of C or better; or permission of the instructor.
By Topic: Advance understanding of high-level language programming - conditional structures; looping structures; arrays; program logic - to solve problems; object oriented programming - be able to create and use objects; software life cycle; validating quality of software produced; sorting and searching algorithms; data structures (linked lists, queues, stacks, hash maps); divide-and-conquer, greedy, and backtracking algorithm design techniques; documenting programs effectively and efficiently; team work. Proficient in Python, R, Java, C, C++, or C# beyond the experience in CS1120. Low-level, systems programming, and Linux programming experience desired. Some mathematics and statistics background. Exposure to machine-learning, Python & R programming are a plus. Strong desire, self-motivation & dedication to learn and contribute to the interesting area of big data computing (mainly storage, retrieval and processing of big data).
This course is a 3 credit hour advance undergraduate or graduate level course, intended for students who plan to design and develop applications, or pursue R&D in the exciting area of big data computing. The primary objective of this course is to familiarize the students with the most important information technologies used in manipulating, storing, and analyzing big data. Mainly focusing on big data models, reduction techniques, applications architectures and big data analytics using cloud-based and other related services, this course will provide students with the knowledge and hand-on experience in designing and implementing big data applications. Topics may include the characteristics and challenges of the big data, state-of-the-art computing paradigm sand platforms (e.g., MapReduce), big data programming tools (e.g., Hadoop, GFS, MongoDB and various cloud-based tools), big data extraction and integration, big data storage, scalable indexing for big data, big graph processing, big data stream techniques and algorithms, big probabilistic data management, big data privacy, big data visualizations, and big data applications (e.g., spatial, finance, multimedia, medical, health, and social data). This course will also explore the current challenges facing big data computing.
The course provides the student with an advanced understanding of the issues involved in dealing with Big Data. It prepares the student for advanced handling of extremely large data sets, accessing the data, reduction of the data into a manageable size and processing the results. Students will reduce Big Data sets, use and develop R packages and other code to analyze the data and produce graphics to explore and explain the data. This course will be very small team project oriented.
Big Data Fundamentals: Concepts, Drivers & Techniques by Erl, Khattak and Buhler, 2016, Pearson, ISBN: 9780134291208 (ebook), 9780134291079 (paper).
We will also extensively refer to research papers, material available on the web and material from the following recommended textbooks.
Data Science on the Google Cloud Platform by Valliappa Lakshmanan, 2018, O'reilly, ISBN: 9781491974568
Big-Data Analytics for Cloud, IoT & Cognitive Learning by Kai Hwang and Min Chen, 2017, John Wiley & Sons Inc, ISBN: 9781119247029
Hadoop: The Definitive Guide, Third Edition, by Tom White (O'Reilly)
Data-Intensive Text Processing with MapReduce, by Jimmy Lin and Chris Dyer
R for Data Science by Hadley Wickham and Garrett Grolemund, O'Reilly, 2016, ISBN: 9781491910399
Goals
Understand the big data characteristics and challenges
Understand real world applications and their techniques involving big data
Know the current big data processing platforms and tools
Understand big data collection, integration and storage
Learn the big data indexing
Learn various queries over big data
Learn the core techniques of processing big data
Familiarity with big data characteristics and challenges
Proficiency with at least one comprehensive big data handling tool
Experience with surveying big-data-related topics and presenting them (orally as well as written)
Design and implemention of a R&D project on big data problems
Collaboration with team members to study the big data techniques and learn big data tools
Students' progress and achievements towards reaching the course goals and objectives will be apparent from such measures as: the results and creativity displayed in course assignments; and the contents of and performance on certain exam portions.
Courses in Summer II 2020
CS5950/CS6030 - SU20
Prerequisites:
By Courses: CS3310 or equivalent with a grade of C or better; or permission of the instructor.
By Topic: Advance understanding of high-level language programming - conditional structures; looping structures; arrays; program logic - to solve problems; object oriented programming - be able to create and use objects; software life cycle; validating quality of software produced; sorting and searching algorithms; data structures (linked lists, queues, stacks, hash maps); divide-and-conquer, greedy, dynamic programming, branch-and-bound and backtracking algorithm design techniques; documenting programs effectively and efficiently; team work. Proficient in Java, C, C++, or C# beyond the experience in CS1120. Low-level, systems programming, and Linux programming experience desired. Some mathematics and statistics background. Exposure to machine-learning, Python & R programming are a plus. Strong desire, self-motivation & dedication to learn and contribute to the interesting area of cloud big data computing (mainly cloud services, cloud based ML and data analytics).
This course is a 3 credit hour advance undergraduate or introductory graduate level topics course, intended for students who plan to design and develop applications, or pursue R&D in the exciting area of cloud big data computing. Cloud computing comes into focus only when you think about what IT always needs: a way to increase capacity or add capabilities on the fly without investing in new infrastructure, training new personnel, or licensing new software. The primary objective is to provide the introduction to the current practices of cloud computing, often also known as the Internet as a platform. Mainly focusing on cloud computing models, techniques, architectures and data analytics using cloud based services, this course will provide students with the knowledge and hand-on experience in designing and implementing cloud-based software systems. Topics may include advanced web technologies (e.g. AJAX and Mashup), distributed computing models and technologies (Hadoop and MapReduce), Infrastructure-as-a-Service (IaaS), Software as a Service (SaaS), Platform-as-a-Service (PaaS), AI and ML as a service (MaaS), virtualization, parallelization, security/privacy, and other issues in cloud big data computing. This course will also explore the current challenges facing cloud & big data computing. Approximately three-fourths of this course will be devoted to learning applications programming using cloud infrastructures and the rest to development/understanding of systems issues in installing and implementing clouds and related systesm on different platforms.
Required Texts
Big-Data Analytics for Cloud, IoT & Cognitive Learning by Kai Hwang and Min Chen, 2017, John Wiley & Sons Inc, ISBN: 9781119247029
We will also extensively refer to research papers, material available on the web and material from the following recommended textbooks.
Big Data Fundamentals: Concepts, Drivers & Techniques by Erl, Khattak and Buhler, 2016, Pearson, ISBN: 9780134291079.
AWS Certified Solutions Architect Study Guide by Ben Piper and David Clinton, 2019, John Wiley & Sons Inc., ISBN: 978-1-119-50417-7.
Cloud Computing for Machine Learning and Cognitive Applications by Kai Hwang, 2017, The MIT Press, ISBN 9780262036412
Hadoop: The Definitive Guide, Third Edition, by Tom White (O'Reilly)
Data-Intensive Text Processing with MapReduce, by Jimmy Lin and Chris Dyer
Mastering Cloud Computing by Buyya, Vecchiola & Selvi, 2013, Morgan Kaufmann Publishers, ISBN 9780124114548
Course Learning Outcomes
Students will be able to describe principles behind cloud-computing.
Students will be able to write simple application programs using a public or private cloud infrastructure.
Students will be able to explore the creation of massively parallel scalable application systems using As-A-Service framework.
Students will be familiar with MapReduce and Hadoop (HDFS).
Advance students will be able to install cloud software and run a cloud.
Students' progress and achievements towards reaching the course goals and objectives will be apparent from such measures as: the results and creativity displayed in course assignments; and the contents of and performance on certain exam portions.
CS4430/CS5430 - SU20
Prerequisites:
By Courses: CS3310 or equivalent with a grade of C or better; or permission of the instructor.
By Topic: Advance understanding of high-level language programming - conditional structures; looping structures; arrays; program logic - to solve problems; object oriented programming - be able to create and use objects; software life cycle; validating quality of software produced; sorting and searching algorithms; data structures (linked lists, queues, stacks, hash maps); divide-and-conquer, greedy, dynamic programming, branch-and-bound and backtracking algorithm design techniques; documenting programs effectively and efficiently; team work. Proficient in Java, C, C++, or C# beyond the experience in CS3310. Low-level, systems programming, and Linux programming experience desired. Some mathematics and statistics background.
Note: A student may not receive credit for both CS 4430 and CS 5430.
This course is a 3 credit hour advance undergraduate or introductory graduate level course on database systems, intended for students who plan to design and develop relational database applications, or get introduced to the area of databases for research.
Objectives:
The general objective of this first course in DBMS is to introduce students basic concepts, techniques and systems for data management so that students are able to design their own databases, write database queries, and develop database applications. Specific objectives include:
Understand basic concepts in databases and DBMSs
Understand the relational theory.
Develop skills needed to design relational databases.
Develop skills to write database queries.
Get experience of database programming and application development.
Upon completion of this course, students will be able to:
explain basic concepts in databases and benefits of databases to organizations,
explain relational model and query relations using algebraic expressions,
create database schema and query database using SQL,
write database programs and develop Internet applications,
design database schema using the Entity-Relationship model,
transform database schema into normalized designs.
Jeffrey D. Ullman and Jennifer Widom. A First Course in Database Systems. 3rd Edition. Prentice Hall, 2007. ISBN: 978-0136006374 (or Chapters 1-12, Database Systems: The Complete Book. 2nd Edition. ISBN: 978-0131873254) . The authors maintain a book web site at http://infolab.stanford.edu/~ullman/fcdb.html where you can find a lot of useful stuff.
Students' progress and achievements towards reaching the course goals and objectives will be apparent from such measures as: the results and creativity displayed in course assignments; and the contents of and performance on certain exam portions.
Courses in Spring 2020
CS3310 - S20
T Th 10:00am-11:15am and 01:00-02:15pm (CRNs 11967 & 14099) in C0141, Floyd Hall, CEAS, 3 credit hours
Office Hrs:
TAs: Rajani Pingili, Mondays 02:00-04:00pm in B115 (data science lab);
UG TA - TBA
Tutoring Help
Instructor: Ajay Gupta : Tuesdays and Thursdays 11:30am-12:30pm in B239 CEAS, and by appointment
Prerequisites:
Solid undergraduate background in programming in high-level and OOP language and/or consent of the instructor.
By Courses: CS1110 and CS 1120 and (CS 1310 or MATH 1450), with a grade of “C” or better, or equivalent.
By Topic: Advance understanding of high-level language programming - conditional structures; looping structures; arrays; program logic - to solve problems; object oriented programming - be able to create and use objects; sorting and searching algorithms; documenting programs effectively and efficiently; team work. Proficient in Java, C, C++, or C# beyond the experience in CS1120. Low-level, systems programming and Linux programming experience desired. Undergraduate level mathematics and statistics background. Strong desire, self-motivation & dedication to learn and contribute to the interesting areas of computer science.
More may be added...
Catalog Description:
This course focuses on the study of internal and external data structures and algorithms with an ongoing emphasis on the application of software engineering principles. Trees, graphs and the basic algorithms for creating, manipulating and using them will be studied. Various types of hash and indexed random access file structures will be discussed and implemented. B-trees and external file sorting will be introduced. Internal and external data and file organizations and algorithms will be compared and analyzed. Students will carry out a number of programming projects which will include the various interface (person-to-person, module-to-module, person-to-module-to-person) aspects of the software development process.
Required Texts
None
We will be extensively using Shaffer's Data Structures and Algorithms book - the link is to an older version, we will provide you an online interactive latest version on Canvas. A few other reference books will be available on eResearve at Waldo library.
Goodrich M. and Tamassia R. "Data Structures and Algorithms in Java,", 6th Edition, ISBN-13: 978-1118771334
ISBN-10: 1118771338, Wiley, 2014.
Sedgewick R and Wayne K., "Algorithms," Addision Wesley, 2011.
Shaffer, C., ""Data Structures and Algorithms Analysis," Dower Publications, 2009-2013, see OpenDSA project.
more Introductory / intermediate level texts to be added...
Corman, T., Leiserson, C. E., and Rivest, R. L., "Introduction to Algorithms," McGraw Hill, 1990.
Horowitz, E., Sahni, S. , and Rajasekaran, S., "Computer Algorithms in C++," Computer Science Press, (1997).
Knuth, D. E., "Fundamental Algorithms: The Art of Computer Programming," Addison-Wesley, Menlo Park, CA (1973).
Knuth, D. E., "Sorting and Searching: The Art of Computer Programming," Addison-Wesley, Menlo Park, CA (1973).
Sedgewick, R. "Algorithms," Addison-Wesley 1983.
Tarjan, R. E., "Data Structures and Network Algorithms," Society of Industrial and Applied Mathematics, 1983.
Course Learning Outcomes
Students who earn a "C" or better in this course should be able to:
communicate knowledgeably about data & file structures and their algorithms
select appropriate data & file structures for a particular problem
develop and test multiple programming applications
use selected data & file structures in programming projects
write readable, maintainable programs
follow written specifications for program functionality, structure and user interface
Students' progress and achievements towards reaching the course goals and objectives will be apparent from such measures as: the results and creativity displayed in course assignments; and the contents of and performance on certain exam portions.
T Th 10:00am-11:15am and 01:00-02:15pm (CRNs 11967 & 14099) in C0141, Floyd Hall, CEAS, 3 credit hours
Office Hrs:
TAs: Rajani Pingili, Mondays 02:00-04:00pm in B115 (data science lab);
UG TA - TBA
Tutoring Help
Instructor: Ajay Gupta : Tuesdays and Thursdays 11:30am-12:30pm in B239 CEAS, and by appointment
Prerequisites:
Solid undergraduate background in programming in high-level and OOP language and/or consent of the instructor.
By Courses: CS1110 and CS 1120 and (CS 1310 or MATH 1450), with a grade of “C” or better, or equivalent.
By Topic: Advance understanding of high-level language programming - conditional structures; looping structures; arrays; program logic - to solve problems; object oriented programming - be able to create and use objects; sorting and searching algorithms; documenting programs effectively and efficiently; team work. Proficient in Java, C, C++, or C# beyond the experience in CS1120. Low-level, systems programming and Linux programming experience desired. Undergraduate level mathematics and statistics background. Strong desire, self-motivation & dedication to learn and contribute to the interesting areas of computer science.
More may be added...
Catalog Description:
This course focuses on the study of internal and external data structures and algorithms with an ongoing emphasis on the application of software engineering principles. Trees, graphs and the basic algorithms for creating, manipulating and using them will be studied. Various types of hash and indexed random access file structures will be discussed and implemented. B-trees and external file sorting will be introduced. Internal and external data and file organizations and algorithms will be compared and analyzed. Students will carry out a number of programming projects which will include the various interface (person-to-person, module-to-module, person-to-module-to-person) aspects of the software development process.
Required Texts
None
We will be extensively using Shaffer's Data Structures and Algorithms book - the link is to an older version, we will provide you an online interactive latest version on Canvas. A few other reference books will be available on eResearve at Waldo library.
Goodrich M. and Tamassia R. "Data Structures and Algorithms in Java,", 6th Edition, ISBN-13: 978-1118771334
ISBN-10: 1118771338, Wiley, 2014.
Sedgewick R and Wayne K., "Algorithms," Addision Wesley, 2011.
Shaffer, C., ""Data Structures and Algorithms Analysis," Dower Publications, 2009-2013, see OpenDSA project.
more Introductory / intermediate level texts to be added...
Corman, T., Leiserson, C. E., and Rivest, R. L., "Introduction to Algorithms," McGraw Hill, 1990.
Horowitz, E., Sahni, S. , and Rajasekaran, S., "Computer Algorithms in C++," Computer Science Press, (1997).
Knuth, D. E., "Fundamental Algorithms: The Art of Computer Programming," Addison-Wesley, Menlo Park, CA (1973).
Knuth, D. E., "Sorting and Searching: The Art of Computer Programming," Addison-Wesley, Menlo Park, CA (1973).
Sedgewick, R. "Algorithms," Addison-Wesley 1983.
Tarjan, R. E., "Data Structures and Network Algorithms," Society of Industrial and Applied Mathematics, 1983.
Course Learning Outcomes
Students who earn a "C" or better in this course should be able to:
communicate knowledgeably about data & file structures and their algorithms
select appropriate data & file structures for a particular problem
develop and test multiple programming applications
use selected data & file structures in programming projects
write readable, maintainable programs
follow written specifications for program functionality, structure and user interface
Students' progress and achievements towards reaching the course goals and objectives will be apparent from such measures as: the results and creativity displayed in course assignments; and the contents of and performance on certain exam portions.