Behavioral & Natural Sciences: Computing Course Descriptions

Undergraduate 2021-2022

INF 120 Principles of Programming I (3)
Prerequisite(s): Grade of "C" or better in MTH 185 /Equiv or placement
Gain an understanding of the basic concepts and considerations of structured and object-oriented programming methodologies and be able to apply these concepts appropriately to solve a variety of typical problems, programming in an event-driven graphical development environment including creating classes and objects.

INF 221 Principles of Programming II (3)
Prerequisite(s): INF 120 or equivalent
Develop programming techniques emphasizing reliability, maintainability, and reusability. This course includes an introduction to objects, classes, and object-oriented design, incorporating encapsulation, inheritance, polymorphism, and abstraction. Additional topics include systems development lifecycle (SDLC), multi-dimensional arrays, exception handling, addresses, pointers, and dynamic storage allocation.

INF 230 Database Design & Development (3)
Prerequisite(s): INF 120 or equivalent
This course provides an introduction to fundamental database concepts including current relational database modeling, file management, data definition, and standards. Learn to develop structured query language (SQL) statements to develop, retrieve, manipulate, and maintain data. Use complex and compound criteria from multiple tables to develop appropriate reports and perform data analysis. Also explore some contemporary non-relational databases.

INF 250 Web Fundamentals & Standards (3)
This course is designed to provide students with the fundamentals of current and proposed standards for HTML, XHTML and CSS. This course also explores web technologies, examining future directions that present opportunities for multimedia developers, examines various multimedia formats (images, audio, video, sound and animation), web standards and accessibility.

INF 255 Client-Side Scripting (3)
Prerequisite(s): INF 221 and INF 250
Introduction to the Document Object Model (DOM), fundamentals of Internet application design, development, and deployment using client-side scripting language(s) and the use of external libraries such as JQuery. Further examination of various multimedia formats (images, audio, video, sound and animation).

INF 256 Server-Side Scripting (3)
Prerequisite(s): INF 221 and INF 250
This course covers the configuration of web server software and the use of server-side programming. Topics include: Server-side scripting in languages such as PHP and Java Server Pages, SQL, database access and drivers, security issues, including access control and secured transmissions.

INF 270 Intro to Mobile Application Development (3)
Prerequisite(s): INF 221 or equivalent
In this course, students will be introduced to the foundations of mobile development and its unique requirements and constraints. Students will create a variety of mobile applications. Requirements and design decisions tied to mobile application development and how they relate to limited resources available on mobile devices are emphasized.

INF 324 Data Structures (3)
Prerequisite(s): INF 221
In-depth study of the abstract data type: its theory and implementation, study of complex data structures including trees, B-trees and graphs.

INF 325 Networks (3)
Prerequisite(s): INF 221
Introduction to networking and technologies for wireless protocols and multimedia messaging services.

INF 328 Object-Oriented Analysis and Design (3)
Prerequisite(s): INF 221
This course covers techniques of abstraction and object design, design patterns, and object modeling and how to apply these concepts to web and mobile applications.

INF 331 Applied Database (3)
Prerequisite(s): INF 230
This course builds on the Database Design & Development course and focuses on the creation, administration and use of databases utilizing a multi-tier application design methodology. This course assumes knowledge of database system concepts. The student will be introduced to application program development in a database environment with emphasis on setting up, modifying, and querying a database. Students will also do extensive project work writing and utilizing database stored procedures and triggers.

INF 355 Advanced Client-Side Scripting (3)
Prerequisite(s): INF 255
This course covers the more advanced Object-Oriented features of a client-side scripting language as well as AJAX with XML and JSON. Open source libraries such as jQuery, JQuery Mobile, and Prototype are covered with an emphasis on developing plugins for these libraries.

INF 356 Advanced Server-Side Scripting (3)
Prerequisite(s): INF 256
Advanced topics for scripting in a server-side programming language. Topics covered will include object-oriented web application frameworks , Model/View/Controller (MVC) design pattern, Content Management Systems (CMS), web services, XML Schemas, SOAP (Simple Object Access Model), WSDL (Web Services Description Language), authentication, authorization, session management, PDF generation and email communication.

INF 370 Algorithms (3)
Prerequisite(s): INF 324
Introduction to useful algorithms for searching, sorting and decision making; utilization of methods to quantify and classify efficiency of algorithms; probabilistic and randomized algorithms and dynamic programming. Course covers advanced algorithms on graphs, divide-and-conquer and dynamic programming, greedy methods, backtracking, branch-and-bound, computational complexity and parallel algorithms.

INF 377 Introduction to Automata (3)
Prerequisite(s): INF 221
Course presents a study of formal languages. Topics include: language classes, formal definitions of grammars and acceptors, deterministic/nondeterministic systems, finite state machines, push down automata and normal forms.

INF 378 Machine Learning and Data Mining (3)
Prerequisite(s): INF 221, INF 230, MTH 320
The course will focus on various data mining and machine learning techniques and their applications. Students will manage real data and implement applications for machine learning and data mining using Python and related libraries.

INF 380 Operating Systems (3)
Prerequisite(s): INF 324
Course offers an introduction to the theory and practice behind modern computer operating systems. Topics will include: computer and operating system structures, process and thread management, process synchronization and communication, memory management, virtual memory, file system, I/O subsystem and device management.

INF 391 Topics in Computing (3)
Prerequisite(s): INF 120 or equivalent and 2 other INF courses
Variable topic course with emphasis is on current trends in technology. Course may be taken up to four times (total of 12 credit hours).

INF 396 Co-Op:Parallel(PT) (0-3) EXP
Prerequisite(s): CED 220
A related work experience supervised by a faculty coordinator in collaboration with the cooperative education. Credit is awarded upon successful completion of the work experience, documentation and evaluation.

INF 400 Senior Research (1)
Prerequisite(s): Senior status or permission of instructor
Students work independently mentored by a faculty advisor on a project that demonstrates and integrates knowledge attained through previous coursework.

INF 496 Co-Op:Parallel(FT) (0-3) EXP
Prerequisite(s): CED 220
A related work experience supervised by a faculty coordinator in collaboration with the cooperative education. Credit is awarded upon successful completion of the work experience, documentation and evaluation.

NLP 105 Introduction to Linguistics for Computer Scientists (3)
In this class, we will explore common questions that linguistics answers such as: Where did English come from? Why do people have accents? If a baby hears two languages, will the baby be confused? The course will explore language structure (syntax), language in culture and use (pragmatics), word parts (morphology), and the sounds of human speech (phonetics and phonology). Expect to dive into fun projects, like teaching people to speak English, creating your own language, and finding out where you favorite words came from and why. This course provides necessary conceptual background for students interested in corpus linguistics and natural language processing and is a prerequisite to Introduction to Language and Computers.

NLP 106 Introduction to Secondary Research Methods (3)
Have you ever heard on the news "scientists have discovered" ...says who, where? Or what about a medical procedure or a drug...how do we know what kind of research has been done...is it safe? If you have ever wondered about these type of questions, this course is for you. We will learn how to find and interpret academic and scientific articles in order to find answers to real world questions. We will learn to think critically about things that may impact the value of the research, such as sample selection and researcher bias. We will also work together to write an article with the view of submitting it to a journal or conference for publication. Natural language processing and computational linguistics requires a deep understanding of the real-world problems at hand and whether the computer derived solutions indeed work as intended in the messy contexts of workplaces and society-at-large. This course will prepare students to be critical consumers of information about the problems they are trying to solve and is a prerequisite to Introduction to Primary Research Methods.

NLP 120 Principles of NLP Programming I (3)
Prerequisite(s): MTH 165
This course will enable students to develop an understanding of the basic concepts and considerations of structured and object-oriented programming methodologies and be able to apply these concepts appropriately to solve a variety of real-world problems using Natural Language Processing (NLP) algorithms from existing open source libraries. INF 120 can be substituted for this course for CS-NLP double major students.

NLP 125 Introduction to Language and Computers (3)
Prerequisite(s): NLP 105
If you've ever wondered how your phone knows what you're going to type or how Google knows what you're trying to buy, this course will answer your questions. Using examples from technology and media we use every day, this course will overview basic concepts related to corpus linguistics (using a big collection of language to understand how language works) and natural language processing (understanding what language is trying to say and often using that information to make real time decisions). Working together, we will engage in hands-on activities and projects using corpus linguistics and natural language processing tools. We will also contemplate what all the advancements in technology mean to our daily work (are robots going to take over?) and privacy (who or what is listening to us and how and why?).

NLP 126 Introduction to Primary Research Methods (3)
Prerequisite(s): NLP 106
The first step to solving a problem, in computer science and other concentration areas, is narrowing the problem down and developing a plan of attack. Suppose we have a formal business or computer problem - and we determine that no one else has ever answered our exact question - how would we go about finding the answer? In this course you will learn how to develop and refine your own research question and conduct a mini-study using proper research theory and methods to look for answers. You will have the opportunity to explore pathways towards publishing or presenting your research.

NLP 221 Principles of NLP Programming II (3)
Prerequisite(s): NLP 120
Students will expand their knowledge of concepts and considerations of structured and object-oriented programming methodologies mastered in NLP 120 by learning approaches for development of reliable, highly maintainable, and re-usable NLP projects. To this end, students will expand their knowledge of object-oriented design approaches through the introduction to encapsulation, inheritance, polymorphism, and abstraction. Students will utilize these approaches to expand the project they developed in NLP 120. Additional topics include systems development lifecycle (SDLC), multi-dimensional arrays, exception handling, addresses, pointers, and dynamic storage allocation. INF 221 can be substituted for this course for CS-NLP double major students.

NLP 230 Applications of Database & Design Development for NLP Programming (3)
Prerequisite(s): NLP 120, INF 120, or equivalent
In addition to providing an introduction to fundamental database concepts including current relational database modeling, file management, data definition, and standards, students will learn to develop structured query language (SQL) statements to develop, retrieve, manipulate, and maintain NLP data generated in in their previously developed projects. Students will learn to use complex and compound criteria from multiple tables to develop appropriate reports and perform data analysis of the NLP data stored in the relational database. Additionally, students will explore some contemporary non-relational databases. INF 230 can be substituted for this course for CS-NLP for double major students.

NLP 250 Web Fundamentals and NLP Programming (3)
Prerequisite(s): NLP 105, NLP 120, NLP 230 or equivalent
This course is intended to equip students with robust understanding of the fundamentals of current and proposed standards for HTML, XHTML and CSS. Using this knowledge, the students will develop web applications aimed at expanding their existing project developed in NLP 230. This course also examines various multimedia formats (images, audio, video, sound and animation), web standards and user accessibility. INF 250 can be substituted for this course for CS-NLP double major students.

NLP 270 Creating NLP-Driven Mobile Applications (3)
Prerequisite(s): NLP 221/INF 221and NLP 230
In this course, students will be introduced to the foundations of mobile app development and its unique requirements and constraints. Students will create a mobile app for their NLP web project created in NLP 230. Students will learn the requirements and design decisions tied to mobile application development and how they relate to limited resources available on mobile devices are emphasized. INF 270 can be substituted for this course for CS-NLP double major students.

NLP 340 Directed Research (1-3)
New Course
In this course, the student will design and conduct Natural Language Processing research under the direction of an NLP faculty member. The student will collect and interpret the data gathered and will present the results of the work as agreed upon by the student and his or her research advisor. Normally this will include a presentation at the University's annual Celebration of Teaching and Learning and at a regional conference or authoring a written paper.