In the listing below, the designator COMS (Computer Science) is understood to precede all course numbers for which no designator is indicated.
NOTE: Students may receive credit for only one of the following two courses: COMS W1004 and W1005. Likewise students may receive credit for only one of the following three courses: COMS W3134, W3136, or W3137.
COMS W1001x and y Introduction to Information Science 3 pts. Basic introduction to concepts and skills in Information Sciences: human-computer interfaces, representing information digitally, organizing and searching information on the World Wide Web, principles of algorithmic problem solving, introduction to database concepts, and introduction to programming in Python.
COMS W1002y Computing in Context 4 pts. Introduction to elementary computing concepts and Python programming with domain-specific applications. Shared CS concepts and Python programming lectures with track-specific sections. Track themes will vary but may include computing for the social sciences, computing for economics and finance, digital humanities, and more. Intended for nonmajors. Students may only receive credit for one of ENGI E1006 and COMS W1002.
COMS W1004x and y Introduction to Computer Science and Programming in Java 3 pts. A general introduction to computer science for science and engineering students interested in majoring in computer science or engineering. Covers fundamental concepts of computer science, algorithmic problem-solving capabilities, and introductory Java programming skills. Assumes no prior programming background. Columbia University students may receive credit for only one of the following two courses: W1004 and W1005.
COMS W1005x and y Introduction to Computer Science and Programming in MATLAB 3 pts. A general introduction to computer science concepts, algorithmic problem-solving capabilities, and programming skills in MATLAB. Assumes no prior programming background. Columbia University students may receive credit for only one of the following two courses: W1004 and W1005.
ENGI E1006x and y Introduction to Computing for Engineers and Applied Scientists 3 pts. An interdisciplinary course in computing intended for first year SEAS students. Introduces computational thinking, algorithmic problem solving and Python programming with applications in science and engineering. Assumes no prior programming background.
COMS W1007x Honors Introduction to Computer Science 3 pts. Prerequisites: AP Computer Science with a grade of 4 or 5 or similar experience. An honors-level introduction to computer science, intended primarily for students considering a major in computer science. Computer science as a science of abstraction. Creating models for reasoning about and solving problems. The basic elements of computers and computer programs. Implementing abstractions using data structures and algorithms. Taught in Java.
COMS W1404x and y Emerging Scholars Program Seminar 1-1 pts. Pass/Fail only. Prerequisites: the instructor's permission. Corequisites: COMS W1004/COMS W1007 or ENGI E1006. Peer-led weekly seminar intended for first and second year undergraduates considering a major in Computer Science. Pass/fail only. May not be used towards satisfying the major or SEAS credit requirements.
ECBM E3060x Introduction to Genomic Information Science and Technology 3 pts. Lect: 3. Introduction to the information system paradigm of molecular biology. Representation, organization, structure, function and manipulation of the biomolecular sequences of nucleic acids and proteins. The role of enzymes and gene regulatory elements in natural biological functions as well as in biotechnology and genetic engineering. Recombination and other macromolecular processes viewed as mathematical operations with simulation and visualization using simple computer programming. This course shares lectures with ECBM E4060, but the work requirements differ somewhat.
COMS W3101x and y Programming Languages 1 pt. Prerequisites: fluency in at least one programming language. Introduction to a programming language. Each section is devoted to a specific language. Intended only for those who are already fluent in at least one programming language. Sections may meet for one hour per week for the whole term, for three hours per week for the first third of the term, or for two hours per week for the first six weeks. May be repeated for credit if different languages are involved.
COMS W3102x and y Development Technologies 1-2 pts. Lab Hours: 0 - 2Not offered in 2016-2017. Prerequisites: Fluency in at least one programming language Introduction to software development tools and environments. Each section devoted to a specific tool or environment. One-point sections meet for two hours each week for half a semester and two point sections include an additional two-hour lab.
COMS W3134x and y Data Structures in Java 3 pts. Prerequisites: COMS W1004 or knowledge of Java. Data types and structures: arrays, stacks, singly and doubly linked lists, queues, trees, sets, and graphs. Programming techniques for processing such structures: sorting and searching, hashing, garbage collection. Storage management. Rudiments of the analysis of algorithms. Taught in Java. Note: Due to significant overlap, students may receive credit for only one of the following three courses: COMS W3134, COMS W3136, COMS W3137.
COMS W3136y Data Structures with C/C++ 4-4 pts. Prerequisites: COMS W1004, W1005, W1007, or ENGI E1006. A second programming course intended for nonmajors with at least one semester of introductory programming experience. Basic elements of programming in C and C++, arraybased data structures, heaps, linked lists, C programming in UNIX environment, object-oriented programming in C++, trees, graphs, generic programming, hash tables. Due to significant overlap, students may only receive credit for either COMS W3134, W3136, or W3137.
COMS W3137y Honors Data Structures and Algorithms 4 pts. Prerequisites: COMS W1004 or W1007. Corequisites: COMS W3203. An honors introduction to data types and structures: arrays, stacks, singly and doubly linked lists, queues, trees, sets, and graphs. Programming techniques for processing such structures: sorting and searching, hashing, garbage collection. Storage management. Design and analysis of algorithms. Taught in Java. Note: Due to significant overlap, students may receive credit for only one of the following three courses: COMS W3134, W3136, or W3137.
COMS W3157x and y Advanced Programming 4 pts. Prerequisites: two semesters of programming experience. Practical, hands-on introduction to programming techniques and tools for professional software construction, including learning how to write code to given specifications as well as document the results. Provides introductory overview of C and C++ in a UNIX environment, for students with Java background. Also introduces scripting languages (perl) and basic web programming. UNIX programming utilities are also covered. Lab Required.
COMS W3203x and y Discrete Mathematics: Introduction to Combinatorics and Graph Theory 3 pts. Prerequisites: any introductory course in computer programming. Logic and formal proofs, sequences and summation, mathematical induction, binomial coefficients, elements of finite probability, recurrence relations, equivalence relations and partial orderings, and topics in graph theory (including isomorphism, traversability, planarity, and colorings).
COMS W3210y Scientific Computation 3 pts. Prerequisites: two terms of calculus. Introduction to computation on digital computers. Design and analysis of numerical algorithms. Numerical solution of equations, integration, recurrences, chaos, differential equations. Introduction to Monte Carlo methods. Properties of floating point arithmetic. Applications to weather prediction, computational finance, computational science, and computational engineering.
COMS W3251x Computational Linear Algebra 3 pts. Prerequisites: two terms of calculus. Computational linear algebra, solution of linear systems, sparse linear systems, least squares, eigenvalue problems, and numerical solution of other multivariate problems as time permits.
COMS W3261x and y Computer Science Theory 3 pts. Prerequisites: COMS W3203. Corequisites: COMS W3134, W3136, or W3137. Regular languages: deterministic and non-deterministic finite automata, regular expressions. Context-free languages: context-free grammars, push-down automata. Turing machines, the Chomsky hierarchy, and the Church-Turing thesis. Introduction to Complexity Theory and NP-Completeness.
COMS W3410y Computers and Society 3 pts. Broader impact of computers. Social networks and privacy. Employment,intellectual property, and the media. Science and engineering ethics. Suitable for non-majors.
CSEE W3827x and y Fundamentals of Computer Systems 3 pts. Lect: 3. Prerequisites: an introductory programming course. Fundamentals of computer organization and digital logic. Boolean algebra, Karnaugh maps, basic gates and components, flipflops and latches, counters and state machines, basics of combinational and sequential digital design. Assembly language, instruction sets, ALU's, single-cycle and multi-cycle processor design, introduction to pipelined processors, caches, and virtual memory.
COMS W3902x and y Undergraduate Thesis 1-6 pts. Prerequisites: agreement by a faculty member to serve as thesis adviser. An independent theoretical or experimental investigation by an undergraduate major of an appropriate problem in computer science carried out under the supervision of a faculty member. A formal written report is mandatory and an oral presentation may also be required. May be taken over more than one term, in which case the grade is deferred until all 6 points have been completed. Consult the department for section assignment.
COMS W3995x or y Special Topics in Computer Science 3 pts. Prerequisites: the instructor's permission. Consult the department for section assignment. Special topics arranged as the need and availability arise. Topics are usually offered on a one-time basis. Since the content of this course changes each time it is offered, it may be repeated for credit.
COMS W3998x and y Undergraduate Projects in Computer Science 1-3 pts. Prerequisites: approval by a faculty member who agrees to supervise the work. Independent project involving laboratory work, computer programming, analytical investigation, or engineering design. May be repeated for credit, but not for a total of more than 3 points of degree credit. Consult the department for section assignment.
ECBM E4060x Introduction to Genomic Information 3 pts. Lect: 3. Introduction to the information system paradigm of molecular biology. Representation, organization, structure, function, and manipulation of the biomolecular sequences of nucleic acids and proteins. The role of enzymes and gene regulatory elements in natural biological functions as well as in biotechnology and genetic engineering. Recombination and other macromolecular processes viewed as mathematical operations with simulation and visualization using simple computer programming. This course shares lectures with ECBM E3060, but the work requirements differ somewhat.
COMS W4111x and y Introduction to Databases 3 pts. Prerequisites: COMS W3134, W3136, or W3137, fluency in Java; or the instructor's permission. The fundamentals of database design and application development using databases: entity-relationship modeling, logical design of relational databases, relational data definition and manipulation languages, SQL, XML, query processing, physical database tuning, transaction processing, security. Programming projects are required.
COMS W4112y Database System Implementation 3 pts. Prerequisites: COMS W4111; fluency in Java or C++. CSEE W3827 is recommended. The principles and practice of building large-scale database management systems. Storage methods and indexing, query processing and optimization, materialized views, transaction processing and recovery, object-relational databases, parallel and distributed databases, performance considerations. Programming projects are required.
COMS W4113x Fundamentals of Large-Scale Distributed Systems 3 pts. Prerequisites: COMS W3134, W3136, or W3137. COMS W3157 or good working knowledge of C and C++. COMS W4118 or CSEE W4119. Design and implementation of large-scale distributed and cloud systems. Teaches abstractions, design and implementation techniques that enable the building of fast, scalable, fault-tolerant distributed systems. Topics include distributed communication models (e.g., sockets, remote procedure calls, distributed shared memory), distributed synchronization (clock synchronization, logical clocks, distributed mutex), distributed file systems, replication, consistency models, fault tolerance, distributed transactions, agreement and commitment, Paxos-based consensus, MapReduce infrastructures, scalable distributed databases. Combines concepts and algorithms with descriptions of real-world implementations at Google, Facebook, Yahoo, Microsoft, LinkedIn, etc.
COMS W4115x and y Programming Languages and Translators 3 pts. Prerequisites: COMS W3134, W3136, or W3137(or equivalent), W3261, and CSEE W3827, or the instructor's permission. Modern programming languages and compiler design. Imperative, object-oriented, declarative, functional, and scripting languages. Language syntax, control structures, data types, procedures and parameters, binding, scope, run-time organization, and exception handling. Implementation of language translation tools including compilers and interpreters. Lexical, syntactic and semantic analysis; code generation; introduction to code optimization. Teams implement a language and its compiler.
COMS W4117x or y Compilers and Interpreters 3 pts. Prerequisites: COMS W4115 or the instructor's permission. Continuation of COMS W4115, with broader and deeper investigation into the design and implementation of contemporary language translators, be they compilers or interpreters. Topics include: parsing, semantic analysis, code generation and optimization, run-time environments, and compiler-compilers. A programming project is required.
COMS W4118x and y Operating Systems I 3 pts. Prerequisites: CSEE W3827 and knowledge of C and programming tools as covered in W3136, W3157, or W3101, or the instructor's permission. Design and implementation of operating systems. Topics include process management, process synchronization and interprocess communication, memory management, virtual memory, interrupt handling, processor scheduling, device management, I/O, and file systems. Case study of the UNIX operating system. A programming project is required.
CSEE W4119x and y Computer Networks 3 pts. Lect: 3. Corequisites: SIEO W3600 or IEOR E3658, or equivalent. Introduction to computer networks and the technical foundations of the Internet, including applications, protocols, local area networks, algorithms for routing and congestion control, security, elementary performance evaluation. Several written and programming assignments required.
COMS W4121x Computer Systems for Data Science 3 pts. Prerequisites: background in Computer System Organization and good working knowledge of C/C++ Corequisites: CSOR 4246(Algorithms for Data Science), STATS W4105(Probability), or equivalent as approved by faculty advisor. An introduction to computer architecture and distributed systems with an emphasis on warehouse scale computing systems. Topics will include fundamental tradeoffs in computer systems, hardware and software techniques for exploiting instruction-level parallelism, data-level parallelism and task level parallelism, scheduling, caching, prefetching, network and memory architecture, latency and throughput optimizations, specialization, and an introduction to programming data center computers.
COMS W4130x Principles and Practice of Parallel Programming 3 pts. Prerequisites: experience in Java, basic understanding of analysis of algorithms. COMS W3134, W3136, or W3137(or equivalent). Principles of parallel software design. Topics include task and data decomposition, load-balancing, reasoning about correctness, determinacy, safety, and deadlock-freedom. Application of techniques through semester-long design project implementing performant, parallel application in a modern parallel programming language.
CSEE W4140x or y Networking Laboratory 3 pts. Lect: 3. Prerequisites: CSEE 4119 or equivalent In this course, students will learn how to put "principles into practice," in a hands-on-networking lab course. The course will cover the technologies and proctocols of the internet using equipment currently available to large internet service providers such as CISCO routers and end-systems. A set of laboratory experiments will provide hands-on experience with engineering wide-area networks and will familiarize students with the Internet Protocol (IP), Address Resolution Protocal (ARP), Internet Control Message Protocol (ICMP), User Datagram Protocol (UDP) and Transmission Control Protocol (TCP), the Domain Name System (DNS), routing protocols (RIP, OSPF, BGP), network management protocols (SNMP, and application-level protocols (FTP, TELNET, SMTP).
COMS W4156x Advanced Software Engineering 3 pts. Prerequisites: substantial software development experience in Java, C++ or C# beyond the level of COMS W3157. Corequisites: Recommended: COMS W4111. Software lifecycle from the viewpoint of designing and implementing N-tier applications (typically utilizing web browser, web server, application server, database). Major emphasis on quality assurance (code inspection, unit and integration testing, security and stress testing). Centers on a student-designed team project that leverages component services (e.g., transactions, resource pooling, publish/subscribe) for an interactive multi-user application such as a simple game.
COMS W4160y Computer Graphics 3 pts. Prerequisites: COMS W3134, W3136, or W3137; W4156 is recommended. Strong programming background and some mathematical familiarity including linear algebra is required. Introduction to computer graphics. Topics include 3D viewing and projections, geometric modeling using spline curves, graphics systems such as OpenGL, lighting and shading, and global illumination. Significant implementation is required: the final project involves writing an interactive 3D video game in OpenGL.
COMS W4162x or y Advanced Computer Graphics 3 pts. Prerequisites: COMS W4160 or equivalent, or the instructor's permission. A second course in computer graphics covering more advanced topics including image and signal processing, geometric modeling with meshes, advanced image synthesis including ray tracing and global illumination, and other topics as time permits. Emphasis will be placed both on implementation of systems and important mathematical and geometric concepts such as Fourier analysis, mesh algorithms and subdivision, and Monte Carlo sampling for rendering. Note: Course will be taught every two years.
COMS W4167x or y Computer Animation 3 pts. Prerequisites: multivariable calculus, linear algebra, C++ programming proficiency. COMS W4156 recommended. Theory and practice of physics-based animation algorithms, including animated clothing, hair, smoke, water, collisions, impact, and kitchen sinks. Topics covered: Integration of ordinary differential equations, formulation of physical models, treatment of discontinuities including collisions/contact, animation control, constrained Lagrangian Mechanics, friction/dissipation, continuum mechanics, finite elements, rigid bodies, thin shells, discretization of Navier-Stokes equations.
COMS W4170x User Interface Design 3 pts. Prerequisites: COMS W3134, W3136, or W3137. Introduction to the theory and practice of computer user interface design, emphasizing the software design of graphical user interfaces. Topics include basic interaction devices and techniques, human factors, interaction styles, dialogue design, and software infrastructure. Design and programming projects are required.
COMS W4172y 3D User Interfaces and Augmented Reality 3 pts. Prerequisites: COMS W4160, COMS W4170, or the instructor's permission. Design, development, and evaluation of 3D user interfaces. Interaction techniques and metaphors, from desktop to immersive. Selection and manipulation. Travel and navigation. Symbolic, menu, gestural, and multimodal interaction. Dialogue design. 3D software support. 3D interaction devices and displays. Virtual and augmented reality. Tangible user interfaces. Review of relevant 3D math.
COMS W4180x or y Network Security 3 pts. Prerequisites: COMS W3134, W3136, or W3137 and W4119, or the instructor's permission. Introduction to network security concepts and mechanisms. Foundations of network security and an in-depth review of commonly-used security mechanisms and techniques, security threats and network-based attacks, applications of cryptography, authentication, access control, intrusion detection and response, security protocols (IPsec, SSL, Kerberos), denial of service, viruses and worms, software vulnerabilities, web security, wireless security, and privacy.
COMS W4187x or y Security Architecture and Engineering 3 pts. Prerequisites: COMS W4118; W4180 and/or W4119 recommended. Secure programming. Cryptograhic engineering and key handling. Access controls. Tradeoffs in security design. Design for security.
COMS W4203y Graph Theory 3 pts. Prerequisites: COMS W3203. General introduction to graph theory. Isomorphism testing, algebraic specification, symmetries, spanning trees, traversability, planarity, drawings on higher-order surfaces, colorings, extremal graphs, random graphs, graphical measurement, directed graphs, Burnside-Polya counting, voltage graph theory.
CSOR W4231x Analysis of Algorithms I 3 pts. Prerequisites: COMS W3134, W3136, or W3137, and W3203. Introduction to the design and analysis of efficient algorithms. Topics include models of computation, efficient sorting and searching, algorithms for algebraic problems, graph algorithms, dynamic programming, probabilistic methods, approximation algorithms, and NP-completeness.
COMS W4236y Introduction to Computational Complexity 3 pts. Prerequisites: COMS W3261. Develops a quantitative theory of the computational difficulty of problems in terms of the resources (eg. time, space) needed to solve them. Classification of problems into complexity classes, reductions, and completeness. Power and limitations of different modes of computation such as nondeterminism, randomization, interaction, and parallelism.
COMS W4241y Numerical Algorithms and Complexity 3 pts. Prerequisites: knowledge of a programming language. Some knowledge of scientific computation is desirable. Modern theory and practice of computation on digital computers. Introduction to concepts of computational complexity. Design and analysis of numerical algorithms. Applications to computational finance, computational science, and computational engineering.
CSOR W4246x Algorithms for Data Science 3 pts. Prerequisites: basic knowledge in programming (e.g., at the level of COMS W1007), a basic grounding in calculus and linear algebra. Methods for organizing data, e.g. hashing, trees, queues, lists,priority queues. Streaming algorithms for computing statistics on the data. Sorting and searching. Basic graph models and algorithms for searching, shortest paths, and matching. Dynamic programming. Linear and convex programming. Floating point arithmetic, stability of numerical algorithms, Eigenvalues, singular values, PCA, gradient descent, stochastic gradient descent, and block coordinate descent. Conjugate gradient, Newton and quasi-Newton methods. Large scale applications from signal processing, collaborative filtering, recommendations systems, etc.
COMS W4252x or y Introduction to Computational Learning Theory 3 pts. Prerequisites: CSOR W4231 or COMS W4236 or COMS W3203 and the instructor's permission, or COMS W3261 and the instructor's permission. Possibilities and limitations of performing learning by computational agents. Topics include computational models of learning, polynomial time learnability, learning from examples and learning from queries to oracles. Computational and statistical limitations of learning. Applications to Boolean functions, geometric functions, automata.
COMS W4261x or y Introduction to Cryptography 3 pts. Prerequisites: comfort with basic discrete math and probability. Recommended: COMS W3261 or CSOR W4231. An introduction to modern cryptography, focusing on the complexity-theoretic foundations of secure computation and communication in adversarial environments; a rigorous approach, based on precise definitions and provably secure protocols. Topics include private and public key encryption schemes, digital signatures, authentication, pseudorandom generators and functions, one-way functions, trapdoor functions, number theory and computational hardness, identification and zero knowledge protocols.
COMS W4281x or y Introduction to Quantum Computing 3 pts. Prerequisites: knowledge of linear algebra. Prior knowledge of quantum mechanics is not required, although it is helpful. Introduction to quantum computing. Shor's factoring algorithm, Grover's database search algorithm, the quantum summation algorithm. Relationship between classical and quantum computing. Potential power of quantum computers.
EECS E4340x Computer Hardware Design 3 pts. Lect: 2. Prerequisites: ELEN E3331, plus ELEN E3910 or CSEE W3827. Practical aspects of computer hardware design through the implementation, simulation, and prototyping of a PDP-8 processor. High-level and assembly languages, I/O, interrupts, datapath and control design, piplelining, busses, memory architecture. Programmable logic and hardware prototyping with FPGAs. Fundamentals of VHDL for register-transfer level design. Testing and validation of hardware. Hands-on use of industry CAD tools for simulation and synthesis. Lab required.
COMS W4444x Programming and Problem Solving 3 pts. Prerequisites: COMS W3134, W3136, or W3137 and CSEE W3827. Hands-on introduction to solving open-ended computational problems. Emphasis on creativity, cooperation, and collaboration. Projects spanning a variety of areas within computer science, typically requiring the development of computer programs. Generalization of solutions to broader problems, and specialization of complex problems to make them manageable. Team-oriented projects, student presentations, and in-class participation required.
COMS W4460y Principles of Innovation and Entrepreneurship 3 pts. Prerequisites: COMS W3134, W3136, or W3137(or equivalent), or the instructor's permission. Team project centered course focused on principles of planning, creating, and growing a technology venture. Topics include: indentifying and analyzing opportunities created by technology paradigm shifts, designing innovative products, protecting intellectual property, engineering innovative business models.
COMS W4560x Introduction to Computer Applications in Health Care and Biomedicine 3 pts. Prerequisites: experience with computers and a passing familiarity with medicine and biology. Undergraduates in their senior or junior years may take this course only if they have adequate background in mathematics and receive the instructor's permission. An overview of the field of biomedical informatics, combining perspectives from medicine, computer science and social science. Use of computers and information in health care and the biomedical sciences, covering specific applications and general methods, current issues, capabilities and limitations of biomedical informatics. Biomedical Informatics studies the organization of medical information, the effective management of information using computer technology, and the impact of such technology on medical research, education, and patient care. The field explores techniques for assessing current information practices, determining the information needs of health care providers and patients, developing interventions using computer technology, and evaluating the impact of those interventions.
COMS W4701x or y Artificial Intelligence 3 pts. Prerequisites: COMS W3134, W3136, or W3137. Provides a broad understanding of the basic techniques for building intelligent computer systems. Topics include state-space problem representations, problem reduction and and-or graphs, game playing and heuristic search, predicate calculus, and resolution theorem proving, AI systems and languages for knowledge representation, machine learning and concept formation and other topics such as natural language processing may be included as time permits.
COMS W4705x Natural Language Processing 3 pts. Prerequisites: COMS W3134, W3136, or W3137; or the instructor's permission. Computational approaches to natural language generation and understanding. Recommended preparation: some previous or concurrent exposure to AI or Machine Learning. Topics include information extraction, summarization, machine translation, dialogue systems, and emotional speech. Particular attention is given to robust techniques that can handle understanding and generation for the large amounts of text on the Web or in other large corpora. Programming exercises in several of these areas.
COMS W4706y Spoken Language Processing 3 pts. Prerequisites: COMS W3134, W3136, or W3137; or the instructor's permission. Computational approaches to speech generation and understanding. Topics include speech recognition and understanding, speech analysis for computational linguistics research, and speech synthesis. Speech applications including dialogue systems, data mining, summarization, and translation. Exercises involve data analysis and building a small text-to-speech system.
COMS W4731x or y Computer Vision 3 pts. Prerequisites: the fundamentals of calculus, linear algebra, and C programming. Students without any of these prerequisites are advised to contact the instructor prior to taking the course. Introductory course in computer vision. Topics include image formation and optics, image sensing, binary images, image processing and filtering, edge extraction and boundary detection, region growing and segmentation, pattern classification methods, brightness and reflectance, shape from shading and photometric stereo, texture, binocular stereo, optical flow and motion, 2-D and 3-D object representation, object recognition, vision systems and applications.
COMS W4733x or y Computational Aspects of Robotics 3 pts. Prerequisites: COMS W3134, W3136, or W3137. Introduction to robotics from a computer science perspective. Topics include coordinate frames and kinematics, computer architectures for robotics, integration and use of sensors, world modeling systems, design and use of robotic programming languages, and applications of artificial intelligence for planning, assembly, and manipulation.
COMS W4735x or y Visual Interfaces to Computers 3 pts. Prerequisites: COMS W3134, W3136, or W3137. Visual input as data and for control of computer systems. Survey and analysis of architecture, algorithms, and underlying assumptions of commercial and research systems that recognize and interpret human gestures, analyze imagery such as fingerprint or iris patterns, generate natural language descriptions of medical or map imagery. Explores foundations in human psychophysics, cognitive science, and artificial intelligence.
COMS W4737x or y Biometrics 3 pts. Prerequisites: a background at the sophomore level in computer science, engineering, or like discipline. In this course. we will explore the latest advances in biometrics as well as the machine learning techniques behind them. Students will learn how these technologies work and how they are sometimes defeated. Grading will be based on homework assignments and a final project. There will be no midterm or final exam. This course shares lectures with COMS E6737. Students taking COMS E6737 are required to complete additional homework problems and undertake a more rigorous final project. Students will only be allowed to earn credit for COMS W4737 or COMS E6737 and not both.
CBMF W4761x or y Computational Genomics 3 pts. Lect: 3. Prerequisites: introductory probability and statistics and basic programming skills. Provides comprehensive introduction to computational techniques for analyzing genomic data including DNA, RNA and protein structures; microarrays; transcription and regulation; regulatory, metabolic and protein interaction networks. The course covers sequence analysis algorithms, dynamic programming, hidden Markov models, phylogenetic analysis, Bayesian network techniques, neural networks, clustering algorithms, support vector machines, Boolean models of regulatory networks, flux based analysis of metabolic networks and scale-free network models. The course provides self-contained introduction to relevant biological mechanisms and methods.
COMS W4771y Machine Learning 3 pts. Prerequisites: any introductory course in linear algebra and any introductory course in statistics are both required. Highly recommended: COMS W4701 or knowledge of Artificial Intelligence. Topics from generative and discriminative machine learning including least squares methods, support vector machines, kernel methods, neural networks, Gaussian distributions, linear classification, linear regression, maximum likelihood, exponential family distributions, Bayesian networks, Bayesian inference, mixture models, the EM algorithm, graphical models and hidden Markov models. Algorithms implemented in Matlab.
COMS W4772x Advanced Machine Learning 3 pts. Prerequisites: COMS W4771 or the instructor's permission; knowledge of linear algebra & introductory probability or statistics is required. An exploration of advanced machine learning tools for perception and behavior learning. How can machines perceive, learn from, and classify human activity computationally? Topics include Appearance-Based Models, Principal and Independent Components Analysis, Dimensionality Reduction, Kernel Methods, Manifold Learning, Latent Models, Regression, Classification, Bayesian Methods, Maximum Entropy Methods, Real-Time Tracking, Extended Kalman Filters, Time Series Prediction, Hidden Markov Models, Factorial HMMS, Input-Output HMMs, Markov Random Fields, Variational Methods, Dynamic Bayesian Networks, and Gaussian/Dirichlet Processes. Links to cognitive science.
COMS W4776x Machine Learning for Data Science 3 pts. Lect.: 3 Prerequisites: SIEO W3600 or W4150 or equivalent. Introduction to machine learning, emphasis on data science. Topics include least square methods, Gaussian distributions, linear classification, linear regression, maximum likelihood, exponential family distributions, Bayesian networks, Bayesian inference, mixture models, the EM algorithm, graphical models, hidden Markov models, support vector machines kernel methods. Emphasizes methods and problems relevant to big data. Students may not receive credit for both COMS W4771 and W4776.
CSEE W4823x or y Advanced Logic Design 3 pts. Lect: 3. Prerequisites: CSEE W3827, or a half semester introduction to digital logic, or the equivalent. An introduction to modern digital system design. Advanced topics in digital logic: controller synthesis (Mealy and Moore machines); adders and multipliers; structured logic blocks (PLDs, PALs, ROMs); iterative circuits. Modern design methodology: register transfer level modelling (RTL); algorithmic state machines (ASMs); introduction to hardware description languages (VHDL or Verilog); system-level modelling and simulation; design examples.
CSEE W4824x Computer Architecture 3 pts. Lect: 3. Prerequisites: CSEE W3827 or the equivalent. Focuses on advanced topics in computer architecture, illustrated by case studies from classic and modern processors. Fundamentals of quantitative analysis. Pipelining. Memory hierarchy design. Instruction-level and thread-level parallelism. Data-level parallelism and graphics processing units. Multiprocessors. Cache coherence. Interconnection networks. Multi-core processors and systems-on-chip. Platform architectures for embedded, mobile, and cloud computing.
CSEE W4840y Embedded Systems 3 pts. Lect: 3. Prerequisites: CSEE W4823. Embedded system design and implementation combining hardware and software. I/O, interfacing, and peripherals. Weekly laboratory sessions and term project on design of a microprocessor-based embedded system including at least one custom peripheral. Knowledge of C programming and digital logic required. Lab Required.
CSEE W4868x System-on-Chip Platforms 3 pts.Not offered in 2016-2017. Prerequisites: COMS W3157 and CSEE W3827 Design and programming of System-on-Chip (SoC) platforms. Topics include: overview of technology and economic trends, methodologies and supporting CAD tools for system-level design, models of computation, the SystemC language, transaction-level modeling, software simulation and virtual platforms, hardware-software partitioning, high-level synthesis, system programming and device drivers, on-chip communication, memory organization, power management and optimization, integration of programmable processor cores and specialized accelerators. Case studies of modern SoC platforms for various classes of applications.
COMS W4901x and y Projects in Computer Science 1-3 pts. Prerequisites: approval by a faculty member who agrees to supervise the work. A second-level independent project involving laboratory work, computer programming, analytical investigation, or engineering design. May be repeated for credit, but not for a total of more than 3 points of degree credit. Consult the department for section assignment.
COMS W4910x and y Curricular Practical Training 1 pt. Prerequisites: obtained internship and approval from faculty advisor. Only for M.S. students in the Computer Science department who need relevant work experience as part of their program of study. Final report required. This course may not be taken for pass/fail credit or audited.
COMS W4995x or y Special Topics in Computer Science, I 3 pts. Prerequisites: the instructor's permission. Special topics arranged as the need and availability arises. Topics are usually offered on a one-time basis. Since the content of this course changes each time it is offered, it may be repeated for credit. Consult the department for section assignment.
COMS E6111y Advanced Database Systems 3 pts. Lect: 2. Prerequisites: COMS W4111 and knowledge of Java or the instructor's permission. Continuation of COMS W4111, covers latest trends in both database research and industry: information retrieval, web search, data mining, data warehousing, OLAP, decision support, multimedia databases, and XML and databases. Programming projects required.
COMS E6113y Topics in Database Systems 3 pts. Lect: 2.Not offered in 2016-2017. Prerequisites: COMS W4111. Concentration on some database paradigm, such as deductive, heterogeneous, or object-oriented, and/or some database issue, such as data modeling, distribution, query processing, semantics, or transaction management. A substantial project is typically required. May be repeated for credit with instructor's permission.
COMS E6117x or y Topics in Programming Languages and Translators 3 pts. Lect: 2. Prerequisites: COMS W4115 or the instructor's permission. Concentration on the design and implementation of programming languages, and tools focused on advanced applications in new areas in software verification, distributed systems, programming in the large, and web computing. A substantial project is typically required. May be repeated for credit.
COMS E6118y Operating systems, II 3 pts. Lect: 2.Not offered in 2016-2017. Prerequisites: COMS W4118. Corequisites: COMS W4119. Continuation of COMS W4118, with emphasis on distributed operating systems. Topics include interfaces to network protocols, distributed run-time binding, advanced virtual memory issues, advanced means of interprocess communication, file system design, design for extensibility, security in a distributed environment. Investigation is deeper and more hands-on than in COMS W4118. A programming project is required.
COMS E6121x Reliable Software 3 pts.Not offered in 2016-2017. Prerequisites: at least one of COMS W4118 Operating Systems I, COMS W4115 Programming Languages and Translators, or COMS W4117 Compilers and Interpreters; or significant software development experiences. Topics include: automated debugging, automated software repair, Concurrent software reliability, software error detection, and more.
COMS E6123x or y Programming Environments and Software Tools (PEST) 3 pts. Lect: 2. Prerequisites: COMS W4156, or equivalent. Software methodologies and technologies concerned with development and operation of today's software systems. Reliability, security, systems management and societal issues. Emerging software architectures such as enterprise and grid computing. Term paper and programming project. Seminar focus changes frequently to remain timely.
COMS E6125y Web-enhanced Information Management (WHIM) 3 pts. Lect: 2. Prerequisites: at least one COMS W41xx or COMS E61xx course and/or COMS W4444, or the instructor's permission. Strongly recommended: COMS W4111. History of hypertext, markup languages, groupware and the Web. Evolving Web protocols, formats and computation paradigms such as HTTP, XML and Web Services. Novel application domains enabled by the Web and societal issues. Term paper and programming project. Seminar focus changes frequently to remain timely.
COMS E6156y Topics in Software Engineering 3 pts. Topics in Software engineering arranged as the need and availability arises. Topics are usually offered on a one-time basis. Since the content of this course changes, it may be repeated for credit with advisor approval. Consult the department for section assignment.
COMS E6160x or y Topics in Computer Graphics 3 pts. Lect: 2. Prerequisites: COMS W4160 or the instructor's permission. An advanced graduate course, involving study of an advanced research topic in Computer Graphics. Content varies between offerings, and the course may be repeated for credit. Recent offerings have included appearance models in graphics, and high quality real-time rendering.
COMS E6174y Interaction Design: A Perceptual Approach 3 pts. Lect: 3. Prerequisites: COMS W4170 or the instructor's permission. Design methology for special-purpose user interfaces. Emphasis on how psychology and perception inform good design. Interviewing and task modeling, participatory design, and low-fidelilty prototyping. Applications of brain research, graphic design and art to develop custom user interfaces components, screen layouts, and interaction techniques for application-specific systems.
COMS E6176x or y User Interfaces for Mobile and Wearable Computing 3 pts. Lect: 2. Prerequisites: COMS W4170 or the instructor's permission. Introduction to research on user interfaces for mobile and wearable computing through lectures, invited talks, student-led discussions of important papers, and programming projects. Designing and authoring for mobility and wearability. Ubiquitous/pervasive computing. Collaboration with other users. Display, interaction, and communication technologies. Sensors for tracking position, orientation, motion, environmental context, and personal context. Applications and social consequences.
CSEE E6180x or y Modeling and Performance 3 pts. Lect: 2. Prerequisites: COMS W4118 and SIEO W4150. Introduction to queuing analysis and simulation techniques. Evaluation of time-sharing and multiprocessor systems. Topics include priority queuing, buffer storage, and disk access, interference and bus contention problems, and modeling of program behaviors.
COMS E6181x or y Advanced Internet Services 3 pts. Lect: 2. In-depth survey of protocols and algorithms needed to transport multimedia information across the Internet, including audio and video encoding, multicast, quality-of-service, voice-over-IP, streaming media and peer-to-peer multimedia systems. Includes a semester-long programming project.
COMS E6183x or y Advanced Topics in Network Security 3 pts. Lect: 3. Prerequisites: COMS W4180, CSEE 4119, and COMS W4261 recommended. Review the fundamental aspects of security, including authentication, authorization, access control, confidentiality, privacy, integrity, and availability. Review security techniques and tools, and their applications in various problem areas. Study the state of the art in research. A programming project is required.
COMS E6184y Seminar on Anonymity and Privacy 3 pts. Lect: 3.Not offered in 2016-2017. Prerequisites: COMS W4261 or COMS W4180 or CSEE W4119, or the instructor's permission. This course will cover the following topics: Legal and social framework for privacy. Data mining and databases. Anonymous commerce and internet usage. Traffic analysis. Policy and national security considerations. Classes are seminars with students presenting papers and discussing them. Seminar focus changes frequently to remain timely.
COMS E6185x or y Intrusion and Anomaly Detection Systems 2 pts. Lect: 2. Prerequisites: COMS W4180 Network Security. Corequisites: COMS W4180 Network Security. The state of threats against computers, and networked systems. An overview of computer security solutions and why they fail. Provides a detailedtreatment for Network and Host-based Intrusion Detection and Intrusion Prevention systems. Considerable depth is provided on anomaly detection systems to detect new attacks. Covers issues and problems in email (spam, and viruses) and insider attacks (masquerading and impersonation).
COMS E6204x or y Topics in Graph Theory 3 pts. Lect: 2. Prerequisites: COMS W4203 or the instructor's permission. Content varies from year to year. This course may be repeated for credit. Concentration on some aspect of graph theory, such as topological graph theory, algebraic graph theory, enumerative graph theory, graphical optimization problems, or matroids.
COMS E6206x or y Topics in Combinatorial Theory 3 pts. Lect: 2. Prerequisites: COMS W4203 or COMS W4205, or the instructor's permission. Concentration on some aspect of combinatorial theory. Content varies form year to year. This course may be repeated for credit.
COMS E6253y Advanced Topics in Computational Learning Theory 3 pts. Lect: 3.Not offered in 2016-2017. Prerequisites: CSOR W4231 or equivalent, COMS W4252 or COMS W4236 helpful but not required. In-depth study of inherent abilities and limitations of computationally efficient learning algorithms. Algorithms for learning rich Boolean function classes in online, Probably Approximately Correct, and exact learning models. Connections with computational complexity theory emphasized. Substantial course project or term paper required.
COMS E6261x or y Advanced Cryptography 3 pts. Lect: 3. Prerequisites: COMS W4261. A study of advanced cryptographic research topics such as: secure computation, zero knowledge, privacy, anonymity, cryptographic protocols. Concentration on theoretical foundations, rigorous approach, and provable security. Contents varies between offerings. May be repeated for credit.
COMS E6291x or y Theoretical Topics in Computer Science 3 pts. Lect: 3. Prerequisites: the instructor's permission. Concentration on some theoretical aspect of computer science. Content varies from year to year. May be repeated for credit.
COMS E6731y Humanoid Robots 3 pts. Prerequisites: A Course in at least One of the following: AI, Robotics, Computer Graphics, or Computer Vision Seminar on Humanoid Robots. Analysis of existing hardware and software platforms. Programming of multi-degree-of-freedom robots. Understanding sensor feedback in perceive-act-sense control paradigms. Task-level planning and reasoning. Final project includes implementing a humanoid robot task on either a simulated or physical robot.
COMS E6732x or y Computational Imaging 3 pts. Lect: 3. Prerequisites: COMS W4731 or the instructor's permission. Computational imaging uses a combination of novel imaging optics and a computational module to produce new forms of visual information. Survey of the state of art in computational imaging. Review of recent papers on: omni directional and panoramic imaging, catadioptric imaging, high dynamic range imaging, mosaicing and superresolution. Classes are seminars with the instructor, guest speakers, and students presenting papers and discussing them.
COMS E6733x or y 3 -D photography 3 pts. Lect: 2. Prerequisites: experience with at least one of the following topics: Computer Graphics, Computer Vision, Pixel Processing, Robotics or Computer Aided Design, or the instructor's permission. Programming proficiency in C, C++ or JAVA. Programming proficiency in C, C++ or JAVA. 3D Photography - the process of automatically creating 3D, texture-mapped models of objects in detail. Applications include robotics, medicine, graphics, virtual reality, entertainment and digital movies etc. Topics include 3D data acquisition devices, 3D modeling systems and algorithms to acquire, create, augment, manipulate, render, animate and physically build such models.
COMS E6734y Computational Photography 3 pts. Lect: 3. Prerequisites: COMS W4160, COMS W4731, or a working knowledge of photography are recommended. Students should have knowledge in any of three core areas: computer vision, computer graphics, or photography. Computational techniques are used to produce a new level of images and visual representations. Topics include: HDR imaging, feature matching using RANSAC, image mosaics, image-based rendering, motion magnification, camera lens arrays, programmable lighting, face detection, single and multi-view geometry, and more.
COMS E6735y Visual Databases 3 pts. Lect: 3.Not offered in 2016-2017. Prerequisites: COMS W3134 or COMS W3137 required. COMS W4731 and COMS W4735 helpful but not required. Contact instructor if uncertain. The analysis and retrieval of large collections of image and video data, with emphasis on visual semantics, human psychology, and user interfaces. Low-level processing: features and similarity measures; shot detection; key frame selection; machine learning methods for classification. Middle-level processing: organizational rules for videos, including unedited (home, educational), semi-edited (sports, talk shows), edited (news, drama); human memory limits; progressive refinement; visualization techniques; incorporation of audio and text. High-level processing: extraction of thematic structures; ontologies, semantic filters, and learning; personalization of summaries and interfaces; detection of pacing and emotions. Examples and demonstrations from commercial and research systems throughout. Substantial course project or term paper required.
COMS E6737x or y Biometrics 3 pts. Lect: 3. Prerequisites: a background at the sophomore level in computer science, engineering, or like discipline. In this course we will explore the latest advances in biometrics as well as the machine learning techniques behind them. Students will learn how these technologies work and how they are sometimes defeated. Grading will be based on homework assignments and a final project. There will be no midterm or final exam. This course shares lectures with COMS W4737. Students taking COMS E6737 are required to complete additional homework problems and undertake a more rigorous final project. Students will only be allowed to earn credit for COMS W4737 or COMS E6737 and not both.
CSEE E6824y Parallel Computer Architecture 3 pts. Lect: 2. Prerequisites: CSEE W4824. Parallel computer principles, machine organization and design of parallel systems including parallelism detection methods, synchronization, data coherence and interconnection networks. Performance analysis and special purpose parallel machines.
CSEE E6831y Sequential Logic Circuits 3 pts. Lect: 3.Not offered in 2016-2017. Prerequisites: CSEE W3827 or any introduction to logic circuits Generation and manipulation of flow table descriptions to asynchronous sequential functions. Coding of flow tables to satisfy various design criteria. Delays, races, hazards, metastability. Analysis of latches to determine key parameters. Bounds of input rates. Clocking schemes for synchronous systems. Synthesis of self-timed systems using 4-phase or 2-phase handshakes.
CSEE E6832x or y Topics in Logic Design Theory 3 pts. Lect: 3. Prerequisites: CSEE W3827 or any introduction to logic circuits. A list of topics for each offering of the course is available in the department office one month before registration. May be taken more than once if topics are different Iterative logic circuits applied to pattern recognition. Finite state machines; alternative representations, information loss, linear circuits, structure theory. Reliability and testability of digital systems.
CSEE E6847y Distributed Embedded Systems 3 pts. Lect: 2.Not offered in 2016-2017. Prerequisites: Any COMS W411X, CSEE W48XX or ELEN E43XX course, or the instructor's permission. An inter-disciplinary graduate-level seminar on the design of distributed embedded systems. System robustness in the presence of highly variable communication delays and heterogeneous component behaviors. The study of the enabling technologies (VLSI circuits, communication protocols, embedded processors, RTOSs), models of computation, and design methods. The analysis of modern domain-specific applications including on-chip micro-networks, multiprocessor systems, fault-tolerant architectures, and robust deployment of embedded software. Research challenges such as design complexity, reliability, scalability, safety, and security. The course requires substantial reading, class participation and a research project.
CSEE E6861y Computer-Aided Design of Digital Systems 3 pts. Lect: 2. Prerequisites: (i) one semester of advanced digital logic (CSEE 4823 or equivalent, or the instructor's permission); and (ii) a basic course in data structures and algorithms (COMS W3134, W3136, W3137, W3157, or equivalent, and familiarity with programming. Introduction to modern digital CAD synthesis and optimization techniques. Topics include: modern digital system design (high-level synthesis, register-transfer level modeling, algorithmic state machines, optimal scheduling algorithms, resource allocation and binding, retiming), controller synthesis and optimization, exact and heuristic two-level logic minimization, advanced multi-level logic optimization, optimal technology mapping to library cells (for delay, power and area minimization), advanced data structures (binary decision diagrams), SAT solvers and their applications, static timing analysis, and introduction to testability. Includes hands-on small design projects using and creating CAD tools.
EECS E6870x or y Speech Recognition 3 pts. Lect: 3. Prerequisites: basic probability and statistics. Theory and practice of contemporary automatic speech recognition. Gaussian mixture distributions, hidden Markov models, pronunciation modeling, decision trees, finite-state transducers, and language modeling. Selected advanced topics will be covered in more depth.
COMS E6900x and y Tutorial in Computer Science 1-3 pts. Prerequisites: the instructor's permission. A reading course in an advanced topic for a small number of students, under faculty supervision.
COMS E6901x Projects in Computer Science 1-12 pts. Prerequisites: the instructor's permission. Software or hardware projects in computer science. Before registering, the student must submit a written proposal to the instructor for review. The proposal should give a brief outline of the project, estimated schedule of completion, and computer resources needed. Oral and written reports are required. May be taken over more than one semester, in which case the grade will be deferred until all 12 points have been completed. No more than 12 points of COMS E6901 may be taken. Consult the department for section assignment.
COMS E6902x and y Thesis 1-9 pts. Available to MS and CSE candidates. An independent investigation of an appropriate problem in computer science carried out under the supervision of a faculty member. A formal written report is essential and an oral presentation may also be required. May be taken over more than one semester, in which case the grade will be deferred until all 9 points have beem completed. No more than 9 points of COMS E6902 may be taken. Consult the department for section assignment.
COMS E6915y Writing for Computer Scientists and Engineers 1-1 pts. 5 week course Prerequisites: For M.S. and Ph.D candidates in CS/CE. Topics to help CS/CE graduate students' communication skills. Emphasis on writing, presenting clear, concise proposals, journal articles, conference papers, theses, and technical presentations. May be repeated for credit. Credit may not be used to satisfy degree requirements.
COMS E6998x and y Topics in Computer Science 3 pts. Prerequisites: Instructor's permission. Selected topics in computer science. Content varies from year to year. May be repeated for credit.
COMS E9800x and y Directed Research in Computer Science 1-15 pts. Prerequisites: submission of an outline of the proposed research for approval by the faculty member who will supervise. The department must approve the number of points. May be repeated for credit. This course is only for Eng.Sc.D. candidates.
COMS E9910x and y Graduate Research I 1-6 pts. Prerequisites: submission of an outline of the proposed research for approval by the faculty member who will supervise. The department must approve the number of credits. May be repeated for credit. This course is only for MS candidates holding GRA or TA appointments. Note: It is NOT required that a student take Graduate Research I prior to taking Graduate Research II. Consult the department for section assignment.
COMS E9911x and y Graduate research II 1-15 pts. Prerequisites: submission of an outline of the proposed research for approval by the faculty member who will supervise. The department must approve the number of points. May be repeated for credit. This course is only for MS/PhD and PhD students. Note: It is NOT required that a student take Graduate Research I prior to taking Graduate Research II. Consult the department for section assignment.
Of Related Interest
Applied Physics and Applied Math
W4761 Computational genomics
W4119 Computer networks
E4340 Computer hardware design
W4840 Embedded systems
E6870 Speech recognition


We are developing an RCP application and after sometime we realized that our views/editors are not consistent in the common functionalities they provide to the user. I came up with a style/consistency guide to address this.
Views/Editors: (Some apply to dialog/wizards also)
1) Make sure all fields have tooltips
2) Make sure tab functionality works
3) Make sure field validation is done for text fields (no characters in number fields, no numbers in character fields etc.,)
4) Make sure to set initial focus to a primary field
5) Make sure to add a dynamic free text filter for all explorer trees and tables/tree tables
6) Make sure to add sorting functionality for all tables
7) Make sure to do long running operations in background thread. If it is a big operation use jobs framework, else use BusyIndicator so that user has clue of what is going on.
8) Make sure all strings are externalized. If not applicable, make sure to add //$NON-NLS-1$ comment
9) Make sure to add context sensitive id to views/editors so that Context sensitive help works
10) Make sure to add cheat sheet for the new view/editor
11) Make sure to dispose resources in dispose() method
12) In the case of editors, make sure that equals/hashCode for editor input is done right so that multiple editors do not open when opening the same element
13) In the case of editors, make sure that editor has input factory so that the editor is persisted properly
14) Make sure to develop the view/editor using MVP pattern
15) Make sure to put model/presenter in core (non UI) bundle and add test cases for them
We normally don't find these requirements in a user story, since user story would normally talk about business functionality. I think this would help in creating a consistent UI and also make the code better. This would also help the testers to know what to look for in every view/editor and raise a bug if a particular one does not support it. Even though this mainly addresses RCP GUI, many of these points would apply for any GUI.
Do you have any comments on these or have more to add? Your comments are welcome.


Emil has been very supportive and now I can draw an outline of things that need to be done by the interim report on 9th July. So, here goes (in a preliminary order, not necessarily the final one):
- thoroughly go through the developer documentation. Getting familiar with unit-testing and JUnit in particular is a must
- have a working copy of the latest CVS sources for SIP and RSS4SC. I've made it once, I can do it again. I'll work with Eclipse under Linux. Last time I checked the Eclipse how-to was a little out-of-date, but I think things got better with the beggining of SoC.
- go through the current implementation of RSS4SC to get an idea of how things ar done (reinventing the wheel is bad)
- write unit tests for testing the RSS plugin for SIP Communicator
- complete the current RSS4SC implementation with some other features that I mentioned in my application (for instance, using a site's favicon as a contact image for a RSS feed)
- bug-fixing (one annoying bug found at the moment is the inabilty to read the news.google.com feeds).


Online gambling is a worldwide phenomenon on its own. Crypto casinos, specifically, are accredited to Bitcoin, where most early casinos were established to cater only to the veterans. Here is one casino that was rather defiant to the trend in its establishment. Officially coming online in 2014, CryptoGames online casino was a Dogecoin-only casino.
The operator, MuchGaming B.V, is a Curacao-based firm that is registered under the same authority. with years of experience, the casino staff does not fail to provide excellent service. The platform is renowned through gambling communities worldwide, mostly for its top-of-the-line banking services, but generally because of its ability to always impress. This CryptoGames Casino review looks at the details of the platform’s operation, to clarify just what it has to offer to gamblers of the world.
Sometime during its early years of operation, the casino underwent strategic evaluation in which the operator decided to integrate and permit other cryptocurrencies. Now, the casino gamblers can choose from a list of 10 cryptos, along with a couple of other altcoins. Overall, this was a good decision given the fame that blockchain networks.
The ability of players to use other altcoins is made possible by the casino’s integration with CoinSwitch. This is third-party software that allows the players to make a transaction with dozens of altcoins, ones that are not permitted by the casino. This makes gambling in this casino very convenient.
By playing at CryptoGames, gamblers get to enjoy lots of benefits. From the word go, they are not required to waste their time with unnecessary signup requests. With only a couple of steps, they can begin playing their favorite games.
Again, the players benefit from the casino’s simple aesthetic. The online platform is very easy to go through. Both the interface and the games are very light, allowing for instantaneous loading and page switching. A bunch of other customization features is made available for players.
The casino also gives away numerous bonus prizes, making the gaming process very lucrative, possibly. The bonuses are well crafted to be generous to the players while being of as little charge to the casino as possible. The numerous game option themselves make this platform a one-stop destination for all casino lovers, all made with the best graphic, security, and fairness software available. A free play module is also featured, allowing players to take the games for a spin without having to place any deposits.
The platform features in-house games only. Such casinos are coming in more frequently, bringing in a unique custom feel to the industry. In-house games are games made by the casino staff. This means the casino lobby does not depend on external game providers. Self-supplied casino games come with many advantages that standard games lack. The casino has got the freedom to add any, and all, game features for players to enjoy. More particular detail on game features is given further in the review.
The casino’s owner, MuchGaming B.V, is admittedly not the best casino operator out there, and neither is the Curacao license they hold. The license gives guidelines that the casino must follow in its operation.
Such are the requirements for the security of all data within the platform, which the operator abides by using advanced SSL encryption on the site. The encryption programs work by obscuring information entered by players, however little it may be.
They also encrypt transaction requests and details as they are entered and sent. By rendering all platform information useless to external parties, the programs effectively make the player and the operator the only ones with the authority to access and edit information.
Also in line with the license policy, the operator does not allow individuals below the age of 18 into the casino. A prompt to confirm age is featured in the signup form and must be filled by all who wish to enter the site. This is done as part of the pursuit to encourage complete responsibility in players who gamble. By eliminating minor activities, the casino comes one step closer to its goal. Other guidelines are also featured regarding responsibility while gambling and they can be found on the platform.
The license policy also determines the countries or regions in which the casino may operate. This is actively enforced, where players from the restricted countries do not even get the chance to enter the casino. This may be frustrating to players, but it is in abidance with legal mandates set by jurisdictional authorities. This means that if those restricted players somehow find a way into the casino and are caught or identified, they are subject to prosecution in their respective areas of residence.
Most casinos come in numerous languages. Unfortunately, CryptoGames is not one of them. This online platform is only available in the international standard UK English. Being an international casino catering to almost the whole world, adding other famously spoken languages is a good feature. This makes gaming more convenient for more players, where they get a sense of familiarity as they play their favorite games, more so if they are playing game variations from their homelands.
With a staff base of casino enthusiasts, well trained in their respective professions, CryptoGames is one website made not only to be profitable but also to be enjoyable by players. This, the casino staff achieves by creating and adding a number of bonus features to the platform. Such is the presence of the casino on all major social media platforms, as well as a number of forum platforms.
The games are of a very low house edge, which increases the rate at which wins are awarded. The reward pool features dozens of jackpots, meaning players generally receive jackpot rewards more often. Numerous other special bonus features are also found in the casino, including ones tied to the social media platforms.
The games are all provably fair, where players can view live statistics or their game processes, be it outcome rendering or pay-out calculation. This is a key feature that attracts floods of new players each day.
As stated above, the games are proven to be fair in all aspects. Now, nearly all casinos brand their games to be fair, while some brand their games to be provably fair. The contrasting difference between such casinos is the single word, ‘provable’. When a casino can prove the game’s fairness, it means they allow players to view any, and all, games processes at will. Other platforms even go on to give players access to the casino account, where they can view all transactional processes.
As for proving games, CryptoGames makes their games with an option to toggle game pages as the game operates, or just after it finishes. While this happens, players see how their deposits are taken and placed into the casino account, they see how the game processes the results and how it calculates and executes pay-outs of winnings if any.
Not all casinos are provably fair, not even close. The few that are either exclusive game providers such as CryptoWild, or normally loaded casinos that also include in-house games. We do not know of any out-sourced casino games that are provably fair.
As stated in the license section, the license policy restricts certain countries from playing. This means that the residents of those respective nations cannot even enter the platform, and must select other online casinos. The following countries are actively restricted from the CryptoWild Casino:
- Hong Kong
- The United States of America
- The Netherlands
- The United Kingdom
Note that all restrictions also extend to all the so-called territories of any of the countries stated above.
Interface and Design
Players who enjoy heavy graphics and background animations will not enjoy this casino. However, this does not mean the casino is not worth it, quite the contrary. CryptoGames casino does not have any back pocket processes that are hidden to players.
The interface is an impressive mix of simplistic, high-quality features. It is very easy to navigate, where game locations are not difficult to reach, and the layouts are very easy to understand. Customization toggles allow the players to edit some aspects of the platform, such as the color orientation that can be switched from the default Light Mode to a more subtle Dark Mode.
At the bottom of the casino page, players find links to social media platforms, casino information, the FAQ page as well as casino rules and terms. Constant gamblers can even view their casino history just beside the game page, and they can edit themes, where possible, under the Your Account section. Overall, the interface is well crafted to facilitate efficient gambling activities, with very few, to no glitches at all.
A Faucet is a special feature that users can utilize to earn free tokens. The objective of these free tokens is to use them, in place of personal funds, to try out new gaming strategies and plays. The faucet is an independent feature that players can level up with their relative gambling. As the faucet level increases, so do the subsequent token rewards, where users with the highest level faucet can receive considerably large token packs.
The feature does not necessarily require players to become overnight high rollers, but it can be used just by participating on a regular basis. In time, it proves to be rewarding, mostly in terms of player experience with game skill and strategy. In CryptoGames casino, players can use the faucet and receive up to 6 150 Satoshi tokens, or whatever relevant coin equivalent.
CryptoGames on Mobile
Unfortunately, CryptoGames does not have any known mobile application. However, players do not miss it, due to the well-crafted online platform. The casino uses HTML 5 software, meaning players can access the casino from their mobile or tablet devices, using any internet browser. The platform I compatible with all major operating systems, that is, Apple OS, Android OS, and Windows OS. This is very convenient for players as they do not need to be sitting in front of a desktop computer each time they want to gamble.
As stated before, the CryptoGames lobby hosts 8 unique games. New gamblers will find a well-explained game tutorial attached to each. The games are all made by the casino and, while not the best, they feature some good graphics, that all load with quick succession. The 8 in-house games are given below:
Being the most played game in the casino, the dice deserve to be first on the list. People generally like the dice because they are easy to understand, and they offer considerably large reward packages. The objective in dice is to make predictions on the dice outcomes if the result will be higher or lower than the specified number.
Dice rolling may be strenuous or simply boring at times, in such cases players can toggle the Auto Bet functions which automatically executes dice rolls bases on parameters entered by the player. By setting a lower win chance, players are more likely to win big, but put themselves at risk at the same time. The casino max on dice pay-outs is 6 BTC.
This classic casino game is played on five reels that spin back and forth before stopping. By landing the correct symbol combinations, a player wins the reward. The max reward that can be won in a single slot round is 5 BTC.
Set on a virtual table, this is another casino classic enjoyed by players worldwide. The Blackjack gameplay uses standard rules and terms, where individuals are given the options to Surrender, Double Down, or Split. Four card decks are used, where they are shuffled after each hand. Hitting the blackjack activates a 6:5 pay-out.
This game is offered in three variants, namely Tens or Better, Jacks or Better, and Bonus Poker. Players can select their preferred variant from the menu on the poker page. Like in roulette, poker payments are given depending on the pay-out table. By pulling a Royal Flush, the player receives a payout multiplier of 500 credits, making it possible for them to win up to 6 BTC from a single bet.
Players can purchase lottery tickets from the Buy Tickets section. The section also displays the chances of winning, along with the number of tickets the player has in their possession. On the main page, the platform displays the reward for the possible ranking positions, the total number of purchased tickets, and the time remaining before a round ends.
The more tickets that are purchased, the more there is to win. This is because the entire purchase revenue is directed to the tournament. In CryptoGames casino, the lottery takes place on Wednesday and Saturday.
This virtual table features a spinning wheel. The table is modeled after the traditional European Roulette and is complete with all the numbers, colors, and regular options. The player places bets by stacking the relevant chips on the betting tab, after which the player presses the spin button and the ball is thrown. Payments are made depending on the pay-out table.
This classic is known to be fun, and sometimes frustrating. The idea of the game is to click on the boxes that do not have mines in them. The more clean boxes the player clicks, the higher the reward they will receive. To make the odds even more profitable, the player can increase the difficulty and number of boxes, and mines, in the game. The 25-box field can hold up to 24 mines, leaving only one jackpot box to uncover.
This is a rare game, offered by the casino in a simplified form, where players can set a bet amount and pick the ball color that they wish to drop. By pressing the play button, the player activates the ball drop, in which the ball falls and rolls through a pegged pyramid as it makes its way to the bottom. The bottom box in which it lands determines the type of pay-out that the player will receive.
It should be noted that the Dice and Roulette games hold massive jackpots that users can claim after meeting the stated game requirements. The portion of the jackpot that a player wins depends solely on their wagered amount. At the moment, the dice and roulette jackpot is a staggering 3 809 BTC.
The relatively low house edge in CryptoGames casino makes it a very competitive adversary. In dice, the casino holds the mantle for the lowest house edge at only 0.8%. The lottery House edge is 0% since all revenue goes back to the players’ reward pool. The slot house edge is 1.97%, while blackjack is 1.253%, roulette is 2.7%, minesweeper is 1%, Plinko is 1.7% and the video poker house edge is 2.1%.
How to Get Started with CryptoGames
Players need a wallet with any of the supported currencies. With the wallet, they can proceed to the simple sign up form for registration
The player only needs to enter their e-mail ad password, after which the casino confirms the address and assigns a random username. This should only take minutes to complete.
CryptoGames permits the following cryptocurrencies:
- Bitcoin (BTC)
- Bitcoin Cash (BCH)
- Litecoin (LTC)
- Ethereum (ETH)
- Ethereum Classic (ETC)
- Dash (DASH)
- Gas (GAS)
- Monero (XMR)
- Dogecoin (DOGE)
Deposits and Withdrawals
With coinswitch, these can be made with over 300 other altcoins, where they are converted when making the deposit and converted back when withdrawing. All the supported coins can also be used. The transactions are mostly free, with the possible charges being negligible.
Withdrawal Limit and Timeframe
The limits on pay-outs are 0.002 BTC, 0.5 BTC per week, and 2 BTC per month, where payments are processed and executed in minutes.
The referral program is available to all users and can be joined using a form within the platform, completely free.
VIP membership is acquired by constantly participating in the casino, gaining player points.
For any inquiries, the support staff can be contacted via an email that is replied to within 24 hours.
As stated before the operator encrypts player data. This is in addition to the advanced security featured in blockchain networks.
- No live chat
- No live casino
- No mobile app
- Too many restricted countries
Crpytogames casino is one of the most prominent crypto casinos out there. Their lobby may be somewhat limited, but they guarantee key features such as high quality, fluid performance, and fairness, among others. Overall, the casino is a good gambling destination that most players are content with.


Ultrablock makes designing concrete walls easy with its lego-like blocks. Ultrablock units offer an easy-to-build, structural retaining wall that provide versatile, economical and aesthetically pleasing options.
Ultrawall software offers designers / engineers the opportunity to analyze a multitude of project scenarios quickly and easily. For more information on Ultrawall Software check out our software page.
Ultrablock offers 18 types of various blocks for unique wall designs to meet project needs. To get block dimensions and weights visit our block library.
Need specification and installation information to help design your ultrablock wall?
Check out the Ultrablock details for retaining wall application drawings.


Selecting a motherboard nowadays is a difficult endeavour, and even more so when picking a unit destined for gaming. We’ve collected a plethora of info in regards to the best gaming motherboards that can now be purchased on the current market. To make things transparent, we usually do our research by analyzing the owner feedback and what the professional review websites are saying about certain models. What’s more, we’ve found that sales figures, the actual price as well as the value offered for the cost matter a great deal for prospective buyers and users who are only browsing for their best options. After having gone through thousands of products, eventually settled for the best one money can buy: MSI 970. This motherboard is compatible with a broad array of processors, ranging from AMD FX to Sempron. In terms of performance, the MSI 970 seems like a safe bet, as it’s incredibly efficient and is capable of supporting DDR3 2133 memory. Moreover, this product works with many types of graphics cards. If, for some reason, you find that the MSI 970 is either unavailable or doesn’t really fit your budget, we suggest you check out the second best unit on the line, the Asus ROG Maximus VII Hero.
If the brain of your computer is the CPU, then the units featured in i7 gaming motherboard reviews serve as the heart. Functioning as the central hub of your PC, the motherboard is the component to which all other elements are linked. A motherboard should be able to keep up with all the other PC components, and as such, should have the following characteristics.
Since the gaming motherboard and the CPU are the two most vital elements of any computer system, it is recommended that you shop for them both at the same time. This is due to the fact that the different types and brands featured as the top gaming motherboards in 2016 work with different CPUs, and vice versa.
Compatibility is determined by checking for the manufacturer of the CPU. AMD and Intel control the lion’s share of the market for CPUs. The AMD processors use different sockets from Intel, so motherboards have either Intel- or AMD-compatible sockets.
Since both AMD and Intel have done modifications on their socket standards, it can be assumed that older processors may no longer work with new generation motherboards. Also, you will want a quick-working CPU with multiple cores.
The best gaming motherboards compared
|Model||CPU Model Socket||Price||Rating||Buy from:|
|MSI 970 GAMING||AMD - AM3+||$$||A+||AMAZON|
|ASUS ROG MAXIMUS VII HERO||Intel||$$$$||A||AMAZON|
|ASUS Crossblade Ranger||AMD - FM2||$$||B||AMAZON|
|Gigabyte Technology GA-Z97X-GAMING 5||Intel||$$$||B+||AMAZON|
Aside from determining the type of processor you need to purchase (either Intel or AMD), the best gaming motherboard of 2016 will also dictate the type of RAM that can be used for expansion of your PC’s onboard memory. Modern gaming requires a motherboard that can support the most recent RAM technology, or the double data rate type three (DDR3).
Choose a motherboard that supports a RAM of at least 4 GB, as most gaming systems, and generally most PCs, require at least that much to run well. Most gamers even prefer upgradability options to 8GB RAM or 16GB RAM to obtain the most optimal levels of performance. With higher RAM capacity, there is less likelihood of lagging or freezing, which can make or break your gaming experience.
Optimum Form Factor
The actual physical size of the unit is also another factor to consider when buying a motherboard. Upgrading an existing PC or building a whole new computer entails that you consider the system’s demands and size in choosing a motherboard. You will want to look at how big your computer case is.
Generally, gaming systems are built into a hefty desktop computer case. A Standard ATX motherboard measuring 12 x 9.6 inches is quite common in gaming. A smaller system requires that you ensure the fit of your motherboard into the PC housing.
The form factor of your motherboard also determines the number of expansion slots for your motherboard. A standard ATX unit comes with seven, while a Micro ATX carries only four.
Support of Motherboard Functions
The motherboard functions to access the information on the DVD drive, the CD drive and the hard drive and presents everything in a manner that you can perceive. It will also serve to control the objects you link to the USB ports, HDMI outputs, monitor ports, as well as other auxiliary connectors.
The motherboard is also involved in connecting to the Internet via a router or an Ethernet cable. The sound and video cards handle most media tasks, while the motherboard is pretty much engaged in optimization of Windows Media Player or iTunes.
Find the best product for your PC
Getting the best gaming motherboards 2016 ensures that your gaming system consistently provides exceptional gaming performance at all times. Amidst the multitude of brands and models on the market, the buyer ought to be aware of the top selling ones and what makes them so in order to make a wise investment in this type of gear.
MSI 970 GAMING
The MSI 970 GAMING Motherboard is one of the cheapest for sale on the market, as it won’t even cost you a full benjamin. Compatible with AMD FX, Phenom II, Athlon II and Sempron processors, the motherboard features a versatile AM3+ socket. It capably supports DDR3 2133 memory so performance is always reliably efficient and powerful. Ensuring low lag and high speed, the motherboard is equipped with the landscape-changing Killer E2200 Game Networking capability that changes the gaming landscape.
The two rear USB 3.0 ports ensure reliable connectivity to various multimedia sources.Optimized for multiple graphics cards, the motherboard ensures that your computer system always operates at a stable level even under the most demanding gaming situations.
ASUS ROG MAXIMUS VII HERO
The ASUS ROG MAXIMUS VII HERO Motherboard boasts Extreme Engine Digi+III that delivers hardcore power using only premium components. The system offers precision-engineered audio via Supreme FX. The onboard M.2 ensures up to 10GB data transfer speeds to help you do more in less time. The GameFirst III software is engineered for advanced optimization of the network to ensure immediate responsiveness for delay-free gameplay.
Your keyboard gets instantly upgraded thanks to the integrated KeyBot. Installation is easy and the dual intelligent processors boost up speed automatically.
The MSI Z97M Motherboard features the advanced Killer E2200 Intelligent Networking Platform engineered for optimal networking performance to enable you to enjoy online games and premium quality streaming media. Thanks to the Advanced Stream Direct feature, the Killer E2200 detects and accelerates game traffic automatically for smooth and stutter-free gameplay performance.
The motherboard’s automatic traffic prioritization is expertly engineered so you can engage in real-time chat and games instead of getting bogged down by low-level system chatter. Most importantly, you can maximize crystal-clear sound and less noise thanks to the MSI Audio Boost 2.
ASUS Crossblade Ranger
Boasting Republic of Gamers technology, the ASUS Crossblade Ranger motherboard comes with gaming-oriented features and capability. Outfitted with a robust AMD A88X FCH chipset, the system has 5-Way Optimization through its Dual Intelligent Processors. This enables the tuning key to perfectly consolidate ASUS’ exclusive DIGI+ Power Control, EPU, TPU and Fan Xpert 3 to optimize system performance as well as digital power setting, whole system cooling configuration and power saving.
Employing the SupremeFX 2014 + Sonic Radar II, the motherboard delivers great sound quality. The Gamer’s Guardian feature ensures durability and reliable performance.
Gigabyte Technology GA-Z97X-GAMING 5
Perfect for i7 processors, the Gigabyte Technology GA-Z97X-GAMING 5 Motherboard offers an LGA1150 package that makes it compatible with Intel Core i7, i5 and i3 processors, as well as Intel Pentium and Celeron processors. The onboard exclusive AMP-UP audio technology delivers ultra-realistic, clear sound effects during gaming, ensuring the richest and most immersive sound experience even when enjoying your favorite movies and music.
The Realtek ALC1150 115dB SNR high-definition Audio Codec provides a remarkable audio listening experience so you can enjoy the best possible sound quality on your computer.Ten DAC channels are available to support 7.1-channel sound playback for ear busting sound.


This is my re-creation of the Stranger Things title sequence. When I first saw the title sequence for the Netflix series I loved it! For some reason yesterday I wanted to give it a shot and recreate it. Motion graphics and animating title sequences has always been something I've enjoyed. Following tutorials online and experimenting in After Effects is always a great way to expand your skill set, and something I need to do more often! Checkout this playlist of various works I've done over the years.
Week by week every Thursday I will reflect on previous experiences I've had creating videos over the years. In Week #16 of TBT for 52 Weeks I talk about music video storyboards I created for Monkeys In Space "Whiskey Kings" back in 2011.
In Week #11 of TBT for 52 Weeks I talk about using cropping as a video editing technique to duplicate yourself into a scene multiple times.
Week by week every Thursday I will reflect on previous experiences I've had creating videos over the years. In Week #6 of TBT for 52 Weeks I talk about "Channel ID for Invent On The Spot". This was created for a YouTube channel called “Invent On The Spot”. Learn more about what a Station ID is and how to create 2D animations using keyframes.
To save you the trouble of reading about why these videos are apart of my Top 10 favorite videos to create this year, you can watch for yourself. However, if you're interested I recently announced that I'm starting a web series about previous videos I've created called "TBT For 52 Weeks". I'll most likely talk about a handful of the following videos shared below, enjoy!
For the past two months I've been experimenting with the Ricoh THETA M15 camera. It's a camera that captures both video and photographs in a 360° panoramic view. I love the possibilities this camera offers but I think there's a lot of improvements that needs to be done with the software and the technology surrounding the camera! Let's start with what's possible with the camera: 360 degree photography.
The 360 degree photographs you take with the THETA camera can be altered in various apps but one in particular that works for me is Roll World. As you can see in the video posted above -- I was able to animate or "warp" a photo from one perspective to another due to the 360° panoramic view captured by the camera. I've been experimenting with this the past couple months and creating short Instagram videos that can be seen at this playlist. From what I've seen on the internet I haven't seen many people editing their THETA videos, most people are just posting clips to Instagram, which is cool too but I see a bigger potential for the photos and videos captured by this camera.
Above is a 360° video that can be viewed on YouTube on a limited amount of phones and browsers such as your iPhone, and the Google Chrome browser. This is a problem! The photographs and videos can also be seen on the Ricoh THETA website if you choose to upload your files there but it's difficult to share the videos on social media websites like Facebook, and Twitter. Yes, the photos and animated videos you create can be uploaded to YouTube, and Instagram but that leaves no power for the viewer to scan the panoramic view you capture when uploading the 360° metadata video to YouTube unless they are viewing on YouTube on select phones, and browsers. Another big problem is the 360 degree panoramic videos can only be seen ON the YouTube app! Meaning, if you decide to upload and share your video to YouTube, and share the link on Facebook; viewers will not be able to scan the panoramic view you captured in the YouTube app that opens through Facebook. Users must only view the videos directly on the YouTube app that allows you to have a look around the scene. I don't know how well this works on the other phones that allow the video to playback because I've only tried watching a shared video over social media on an iPhone, and an LG smartphone and again the users cannot scan the panoramic video unless it's directly on the YouTube app -- which is terrible for sharing! I guess other apps. and social media platforms need to catch up with what this technology has to offer but until then it's going to be difficult to get users to go directly to your channel and watch your 360 degree videos unless they are hardcore YouTube fans or smart with searching, and finding your channel (I know it can be difficult for some people to use smartphones still).
Lastly, I think editing softwares need to catch up with the technology so those who utilize a 360° camera can have the ability to direct a scene and what exactly the viewers are seeing. This is somewhat possible using the Roll World app I mentioned earlier but you don't have absolute control to pan around the scene multiple times whenever you choose. Using the Roll World app can take time! For instance, I've spent up to two hours at times exporting videos from Roll World just to create the possibility for me to import and edit the videos in Final Cut Pro X. When exporting your videos from Roll World, no audio is saved to the video clips so later you will have to match the audio from the original video files. I think there's so many possibilities of directing the viewer from the videos you've captured but unfortunately it's not made easy as of yet, and there's only 2 options creative filmmakers have to do so. One, you could prepare the scene ahead of time and face the camera in the direction you want to lead the viewers from the start, and manually whip the camera in the directions you want to lead your viewer. Two, open the raw video in the Ricoh THETA app on your computer and scan around the scene in full screen mode while screen recording with Quicktime or whichever app you prefer to do so. The latter option is definitely possible but you will most likely capture the mouse cursor in your screen recording.
Thanks for taking the time to read this rant of mine, it's a bit difficult explaining the troubles of the current technology surrounding 360 degree video. I plan on creating a review of the THETA camera in a few weeks, so if you're interested stay tuned for that!
OCTOBER UPDATE: As of late September Facebook has began supporting 360-degree video in the news feed for Android users. I've now uploaded my "360° Vacation In Texas" video to Facebook.com/RayRomanMedia and plan on uploading more videos as the support for other devices expands.
This is a "How To" cooking video I created for my cousin. Stay tuned as she plans on launching her own channel soon!
I'll be unboxing, and reviewing products and give you instructional how to videos on products as well! Subscribe to Ray Roman Reviews at http://youtube.com/subscription_center?add_user=rayromanreviews
This is an instructional video of how to shrink wrap your DVD's, and package or repackage other items. The steps are listed below:
1. Insert your DVD into the 6x9 inch PVC Heat Shrink Film Wrap Flat Bag.
2. Place your shrink wrapped item in place on the Impulse Sealer.
3. If necessary adjust the timer setting to what will work best for sealing your packaging material.
4. Push down on the Impulse Sealer arm and wait for the red timer light to turn-off.
5. If you did not remove the excess shrink wrap after the red light turned off, grab a pair of scissors and cut just outside of the sealed item.
6. Use the heat gun to apply heat to your shrink wrapped item. In my experience it has been best to start from the opening side of the DVD, move along to the top, and finally the bottom. It's not necessary to go over the 4th side, if you chose to do so it may cause wrinkling on the front and back the shrink wrapped DVD.
I hope this helps, if you have any further questions please leave a comment!
Find these items on Amazon at the following links!
12" Impulse Sealer: http://amzn.com/B000UYC55O
500 Pcs 6x9 Inch PVC Heat Shrink Film Wrap Flat Bag: http://amzn.com/B00V7K9RME


As always, lots is going on in the digital marketing world. The hottest trends seem to change daily and with every Facebook algorithm update and Amazon news a new trend starts or dies. I hear tons of chatter on live video, how AI is revolutionizing advertising, and yup, chatbots.
Here are my 5 digital marketing trends I am following in 2018.
I can see chatbots being up and coming. Users and customers are getting used to instant responses to simple questions. No one wants to navigate through a website to find the answer or – gosh – call a customer service number. So for the benefit of good and fast customer service, I see chatbots finally coming out of the woodwork. 45% of users prefer chatbots for customer service questions and the global chatbot market is expected to reach $1.23 billion by 2025 (Source: http://www.businessinsider.com/chatbot-market-stats-trends-size-ecosystem-research-2017-10)
Chatbots bring us straight to artificial intelligence (AI). Machine learning has already been applied in digital marketing for a number of years to identify which ad to serve at what time to which user. AI is also used in predicting stock markets. And of course, voice search.
Alexa, Siri, Hi Google, Cortana, whatever your favorite voice search is, it’s on the rise. The prediction is that by 2020 50% of all searches will be voice searches. By 2019 voice search will be a $600M market (Source: https://www.branded3.com/blog/google-voice-search-stats-growth-trends/).
4. Strategic Social Media Marketing
With the most recent Facebook algorithm update, it is about impossible for brands to get any visibility with its fans. Just as a refresher, Facebook changed their algorithm in light of the 2016 fake news scandal to demote news and brands and show more posts from family and friends to promote “meaningful social interactions”. In order for brands to be visible on Facebook, they’ll have no choice but to pay for it. I believe this will lead to a review of social media marketing across many brands, especially those who struggle seeing any direct results from their ads on social media. My prediction is social media marketing will become more strategic and start mixing with brand marketing.
5. (Live) Video
With the changes in TV behavior, we will see a shift in video advertising. More brands will turn to YouTube, Hulu, Facebook for brand videos and video advertising. Each day YouTube users watch a billion hours of video (Source: https://www.youtube.com/yt/about/press/). Facebook is expecting growth in video over the next few years and is actively improving the experience with new features such as Watch (Source: https://newsroom.fb.com/news/2018/01/facebook-reports-fourth-quarter-and-full-year-2017-results/). Facebook and Instagram Stories will most likely play a big part in video in 2018.
What do you think will be the biggest digital marketing trends in 2018?